交换排序;结果分升序和降序两种排列
以升序为例:第一轮比较:两两比较大小,大值向右挪到,直到最大值挪动到索引为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))