冒泡法:基础排序算法

交换排序;结果分升序和降序两种排列
以升序为例:第一轮比较:两两比较大小,大值向右挪到,直到最大值挪动到索引为n-1的位置结束
                     第二轮比较:两两比较大小,大值向右挪到,直到最大值挪动到索引为n-2的位置结束
                     依此类推
时间复杂度O(n)
 
简单代码实现
1 L=list(iterable) # L里的元素为int类型
2 for i in range(len(L)-1):
3     count = 1
4     for j in range(len(L)-1-i):
5         if L[j] > L[j+1]:
6             L[j],L[j+1] = L[j+1],L[j]
7             count += 1  # 记录交换次数
8     print(count)
9 print(L)

 

优化代码

 1 L=list(iterable) # L里的元素为int类型
 2 sum = 0 
 3 for i in range(len(L)-1):
 4     flag = False  # 打标记
 5     count = 0 
 6     for j in range(len(L)-1-i):
 7         if L[j] > L[j+1]:
 8             L[j],L[j+1]=L[j+1],L[j]
 9             flag = True
10      count += 1 #计算每次遍历交换了几次
11     print(count) 
12     sum += 1 # 计算总共遍历了几行
13     if not flag: # 如果在某次遍历一次也没有交换,则break打断
14         break
15 print('{},{}'.format(L,sum))

 

posted @ 2018-04-01 10:20  蘑菇的步伐  阅读(104)  评论(0编辑  收藏  举报