理解
依然是百度解释:
它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
我的理解:
每次遍历列表,都得到一个最大的数,这就是冒泡。
代码实现
def bubbleSort(a):
l = len(a)
for i in range(l-1,-1,-1) : # 这样的好处是每次遍历的次数都会减一(因为每次遍历完都会有一个数排好了序),节省代码运行资源
for j in range(i):
if(a[j] > a[j+1]):
a[j], a[j+1] = a[j+1], a[j]
a = [3,4,1,2,7,6,5,0]
bubbleSort(a)
print(a)
图解
复杂度
冒泡排序算法的主要时间消耗是比较次数。
当i = 1时,比较次数为N - 1;
当i = 2时,比较次数为N - 1;
以此类推。
总共比较次数为(N - 1) + (N - 2) + ... + 2 + 1 = N(N - 1)/2
故冒泡排序算法的时间复杂度为 。