排序演算法之氣泡排序Python

2021-10-24 04:12:52 字數 939 閱讀 5406

排序演算法主要是對給定的順序表進行元素排序,公升序或者降序。最簡單的思路就是兩兩對比,找出最大的,放到位置上,然後繼續在剩下的元素中找出次大的放到位置上,如此往復。這就是冒泡的思想,兩兩對比,就像水中的乙個氣泡,逐步浮出水面。

接下來詳細分析一下,第一次冒泡時,加入有n個元素,那麼就需要對比n-1次,找到最大的元素;第二次冒泡時,因為最大的已經找到了,剩下的是n-1個元素,所以需要比較n-1-1次,找到次大的元素,以此類推。那麼當找到倒數第二大的元素時(也就是次小元素),還剩下乙個元素,這時其實就不用比較了,因為就乙個肯定是最小的了。

**所以每一次找到乙個最大元素,排序一共只需要找出n-1個最大元素即可。即需要比較n-1次,外層迴圈n-1次。**那麼在每次迴圈中(找最大元素時),怎麼比較呢?第乙個和第二個進行比較,(假設要公升序排列),那麼就把大的放在後面,小的放在前面那個元素上。這樣,第一次比較完後,大的就放在第二個上了。第二次比較時,第二個和第三個元素比較,以此類推,最後是第n-1個和第n個進行比較,所以是迴圈n-1次。這樣找到了第乙個最大元素,那麼在找第二大元素時,只需要迴圈n-2次。所以可以看出,內層迴圈次數是逐步減少的。

# 氣泡排序

def bubble_sort(alist):

for i in range(len(alist)-1):

for j in range(0, len(alist) - 1 - i):

if alist[j] > alist[j + 1]:

alist[j], alist[j + 1] = alist[j + 1], alist[j]

alist = [1,2,5,84,10,1,3]

bubble_sort(alist)

print(alist)

所以比較次數是1次到n-1次累加求和,數量級為(n^2),

即時間複雜度為o(n^2)。

Python排序演算法之氣泡排序

顧名思義,氣泡排序直觀的意思是氣泡越大冒的越快 對應到我們的列表中就是數字最大的先選出來,然後依次進行。例如 mylist 1,4,5,0,6 比較方式為 相鄰的兩個數字先進行比較,也就是mylist 0 和mylist 1 發現不是 的關係,就繼續比較mylist 1 和mylist 2 依次進行...

排序演算法之python氣泡排序

氣泡排序是一種交換排序 比較相鄰的連個關鍵字,把大的往後放,小的就向前移動,即冒泡 def bubblesort input list 如果待排序列為空,則直接返回空列表 if len input list 0 return sorted list input list for i in range...

排序演算法(python) 之 氣泡排序

比較相鄰的兩個元素,若前乙個大於後乙個則交換 對每一對相鄰元素進行比較,直至最後一對元素。重複上述步驟,知道排序完成。這為向上冒泡。向下冒泡同理。1 向上冒泡 m input split n int m i for i in range len m 輸入的陣列 for i in range len ...