Python实现冒泡排序

上一篇 / 下一篇  2014-03-02 16:48:35 / 个人分类:Python

#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
        

TAG:

 

评分:0

我来说两句

我的栏目

日历

« 2024-04-24  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 6704
  • 日志数: 7
  • 建立时间: 2014-02-23
  • 更新时间: 2014-03-10

RSS订阅

Open Toolbar