昨天去图书馆自习,我向旁边的妹子借了本计算机等级考试的书看了看。在看那本书的时候我才发现,原来我以前把“选择排序”和“冒泡排序”搞反了。把选择当冒泡,把“冒泡”当选择了。
今天早上一起来我写了一下Python代码,写了一段冒泡排序的程序。大概是因为语法不熟悉的缘故,Python版冒泡排序我还是弄了10多分钟。以下是我的代码:
#!/usr/bin/python
a = range(10)
for i in xrange(10):
for j in xrange(9 - i):
if a[j] < a[j+1]:
temp = a[j]
a[j] = a[j+1]
a[j+1] = temp
print a
a = range(10)
for i in xrange(10):
for j in xrange(9 - i):
if a[j] < a[j+1]:
temp = a[j]
a[j] = a[j+1]
a[j+1] = temp
print a
和C/C++比起来,代码风格简洁多了。


#!/usr/bin/python
a=range(10)
for i in xrange(10):
for j in xrange(9 – i):
if a[j]<a[j+1]:(a[j],a[j+1])=(a[j+1],a[j])
print a
这样效率才高嘛
@yetone 差不多啦,我只是觉得我那样写好读一些~
太专业了,看不懂。
呵呵,小错误。
@搬运车 哪里小错误?
用快速排序,配合列表解析或者函数式编程,2行就搞定了,还简洁些
#这是基于列表解析的
def qsort(L):
if len(L) <= 1 : return L
return qsort([s for s in L[1:] if s = L[0]])
#这是基于lambda表达式的
def quickSort(L):
if len(L) <= 1 : return L
return quickSort(filter(lambda x : x = L[0], L[1:]))
虽然可读性比较差,不过缩到2行了……好像没有啥实际用途……
上面怎么有两行只有一半….装逼失败,重新发一遍
#这是基于列表解析的
def qsort(L):
if len(L) <= 1 : return L
return qsort([s for s in L[1:] if s = L[0]])
#这是基于lambda表达式的
def quickSort(L):
if len(L) <= 1 : return L
return quickSort(filter(lambda x : x = L[0], L[1:]))
既然是python,就 Pythonic 点嘛!
像调换两个数值的位置, a,b = b,a 就可以了
用tmp=a; a=b;b=tmp; 是c的风格嘛!