今天去回顾了一下八大排序——冒泡排序
冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。
冒泡排序的核心思想是相邻的两个数据进行比较,假设数列A有n个数据,先比较第1个和第2个数据,如果A1 > A2,则交换他们的位置,确保较大的那个数在右侧。
接下来比较A2和A3,采用相同的规则,较大的数向右移动,最后会比较An-1 和An的大小,如果An-1 > An,那么交换他们的位置,这时,An是数列中的最大值。
你肯定已经发现,经过这一轮比较后,数列仍然是无序的,但是没有关系,我们已经找到了最大值An,而且它在队列的末尾。
接下来要做的事情,就是简单的重复之前的过程,整个数列,先暂时把An排除在外,这n-1个无序的数,仍然可以采用之前的方法,找出n-1个数当中的最大值,这样An-1就是第2大的数,继续对n-2个数做相同的事情
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vksbm81R-1597160146376)(/media/editor/bubbleSort_20200514205747716103.gif)]
先上代码。
def Bubbling(list):
n = len(list)
for i in range(n): #遍历数组次数
for j in range(n-i-1): #与后面的数比较次数
if list[j] > list[j+1]:
list[j],list[j+1] = list[j+1],list[j] #前面的数大于后面的数,则将两数进行交换
return list
if __name__ == '__main__':
list = [1,2,4,7,9,5,63,8,3,10]
print(Bubbling(list))