#encoding=utf-8
#冒泡排序
def BubbleSort(mylist):
for i in range(len(mylist)-1,0,-1):
print i #测试,可删
for j in range(i):
if mylist[j+1] < mylist[j]:
mylist[j],mylist[j+1] = mylist[j+1],mylist[j]
print mylist #测试,可删
#问题:在基本冒泡排序的示例中,第三轮结束时,其实已经排序完成了,但是还是一直会持续后面几轮的排序,这就带来了无谓的浪费.
#改进:加入标志,判断,若是上一轮不存在数据交换,代表上一轮已经是排序的了,退出
def BubbleSort2(mylist):
flag = 1
for i in range(len(mylist)-1,0,-1):
print i #测试,可删
if flag:
flag = 0
for j in range(i):
if mylist[j+1] < mylist[j]:
mylist[j],mylist[j+1] = mylist[j+1],mylist[j]
flag = 1;
print mylist #测试,可删
else:
break
#测试
mylist = [1,2,5,4,5,6,7,8,9,10,11]
print mylist
BubbleSort(mylist)
print '经过“冒泡排序”以后:'
print mylist
print '------------------------------------------\n'
mylist2 = [1,2,5,4,5,6,7,8,9,10,11]
print mylist2
BubbleSort2(mylist2)
print '经过改进的“冒泡排序”以后:'
print mylist2