Python數據結構之冒泡法

一、冒泡法介紹

冒泡法屬于交換排序,兩兩比較大小,交換位置,如同水泡咕嘟咕嘟往上冒。結果分為升序和降序排列

  • 升序:
    n個數從左至右,編號從0開始到n-1,索引0和1的值比較,如果索引0大,則交換兩者位置,如果索引1大,則不交換。繼續(xù)比較索引1和2的值,將大值放在右側。直至n-2和n-1比較完,第一輪比較完成。第二輪從索引0比較到n-2,因為最右側n-1位置上已經是最大值了。依次類推,每一輪都會減少最右側的不參與比較,直至剩下最后2個數比較。
  • 降序則和升序相反。

二、過程實現圖解:

image.png

image.png

三、使用Python代碼實現
1,簡單列表冒泡法的實現:

#冒泡法的實現
lst = [4,3,2,1]
length = len(lst)
for i in range(length):
    for j in range(length-1-i):
        if lst[j] > lst[j+1]:
            tmp = lst[j+1]
            lst[j+1] = lst[j]
            lst[j] = tmp
        print(i,j,lst)
#實現過程:
0 0 [3, 4, 2, 1]
0 1 [3, 2, 4, 1]
0 2 [3, 2, 1, 4]
1 0 [2, 3, 1, 4]
1 1 [2, 1, 3, 4]
2 0 [1, 2, 3, 4]

2,簡單冒泡實現

#簡單冒泡實現
num_list = [[1,9,8,5,6,7,4,3,2],[1,2,3,4,5,6,7,8,9]]
nums = num_list[1]
print(nums)
length = len(nums)
count_swap = 0   #交換次數
count = 0    #比較次數
for i in range(length):
    for j in range(length-i-1):
        count += 1
        if nums[j+1] > nums[j]:
            tmp = nums[j]
            nums[j] = nums[j+1]
            nums[j+1] = tmp
            count_swap += 1
print(nums,count_swap,count)
#實現結果
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[9, 8, 7, 6, 5, 4, 3, 2, 1] 36 36
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 完全沒有想到上周的作業(yè)可以入圍小組最佳,很驚喜!因為這篇文章我得到了很多打賞和點評,非常感謝大家的支持和鼓勵! 交...
    薇Elizabeth閱讀 230評論 6 4
  • 我一直都是個文藝青年來著,所以很多年前的我就愛在空間日志寫東西。但這幾年隨著微博微信的廣泛流傳,我的qq已經變成了...
    派姐姐閱讀 173評論 0 0
  • 殷紅竇綠伴淺粉 相依相擁不離棕 綠葉自古喻陪襯 唯見花事才領意 何時百花裁剪過 才知二月春風至 蕾蕾含苞守風華 怎...
    輕倚歲月閱讀 483評論 2 1

友情鏈接更多精彩內容