冒泡排序这 2 个小技巧,你了解吗?
def bubble_sort(our_list):
lastSwapIndex, sortBoundary = 0, len(our_list) - 1
for _ in range(len(our_list)):
flag = True # 标记数组是否有序
for j in range(0, sortBoundary):
if our_list[j] > our_list[j+1]:
our_list[j], our_list[j+1] = our_list[j +1], our_list[j] # swap elements
flag = False
lastSwapIndex = j # 标记最后一次交换位置
sortBoundary = lastSwapIndex # 比较一轮后,得到下一轮排序的边界
if flag:
break
return our_list
考虑下面三种输入的待排序序列 our_list:
-
整体无序
print(bubble_sort([3,5,1,3,8,7,9,4,5]))
-
局部无序
print(bubble_sort([1,2,3,5,4,6,7,8,9]))
-
完全有序
print(bubble_sort([1,2,3,4,5,6,7,8,9]))
长按二维码
加入「算法刷题日记」