冒泡排序
说到排序,最简单的思路就是:先找出数组中最小的元素,放到最前面,然后从第二个元素开始继续这一过程,这就是选择排序:
def sort(our_list):n=len(our_list)for i in range(n):for j in range(i+1,n):if our_list[i]>our_list[j]:our_list[i],our_list[j]=our_list[j],our_list[i]
a=[9,3,2,6,8,4,7,1,5]sort(a)print(a)>>> [1, 2, 3, 4, 5, 6, 7, 8, 9]
冒泡排序其实跟选择排序的思路有点类似,但冒泡排序是比较相邻两元素大小,第n轮中,数组第n大的元素一定能被确定。
def bubble_sort(our_list):n=len(our_list)for i in range(n):for j in range(n-1):if our_list[j]>our_list[j+1]:our_list[j],our_list[j+1]=our_list[j+1],our_list[j]
但冒泡排序可以进一步优化:第n轮中,数组至少后n位元素已经确定,也可能后面有更多的元素处于顺序状态,可以考虑加个边界标记。
def bubble_sort(our_list):n=len(our_list)border=n-1for i in range(n):max_index=0for j in range(border):if our_list[j]>our_list[j+1]:our_list[j],our_list[j+1]=our_list[j+1],our_list[j]max_index=jborder=max_index
对于 A=[1,2,3,4,6,5] 的情况,未优化的冒泡排序需要执行 5+4+3+2+1=15 次,而优化后的只要 5+4=9 次

