摘要:冒泡排序冒泡排序英語是一種簡單的排序算法。冒泡排序算法的運作如下比較相鄰的元素。冒泡排序動態(tài)圖代碼實現(xiàn)我們來逐行分析下。這里的減是為了不在遍歷之前排序好的元素。記錄交換的次數(shù),但代表沒有交換,序列已經有序。
冒泡排序
冒泡排序(英語:Bubble Sort)是一種簡單的排序算法。它重復地遍歷要排序的數(shù)列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。遍歷數(shù)列的工作是重復地進行直到沒有再需要交換,也就是說該數(shù)列已經排序完成。這個算法的名字由來是因為越小的元素會經由交換慢慢“浮”到數(shù)列的頂端。
冒泡排序算法的運作如下:
1、比較相鄰的元素。如果第一個比第二個大(升序),就交換他們兩個。
2、對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最后一對。這步做完后,最后的元素會是最大的數(shù)。
3、針對所有的元素重復以上的步驟,除了最后一個。
4、持續(xù)每次對越來越少的元素重復上面的步驟,直到沒有任何一對數(shù)字需要比較。
冒泡排序動態(tài)圖 代碼實現(xiàn)我們來逐行分析下。
def bubble_sort(list): n = len(list): for j in range(n - 1):
一至三行都是常規(guī)操作,定義函數(shù),獲取數(shù)據(jù)長度,循環(huán)遍歷。
def bubble_sort(list): n = len(list): for j in range(n - 1): count = 0
第四行定義一個 count 變量,用來記錄交換的次數(shù)。
def bubble_sort(list): n = len(list): for j in range(n - 1): count = 0 for i in range(1, n - 1 - j)
第五行在定義一個 for 循環(huán),用來遍歷剩下的數(shù)據(jù),注意 range 第二個參數(shù)是 n - 1 - j。這里的減 j 是為了不在遍歷之前排序好的元素。
def bubble_sort(list): n = len(list): for j in range(n - 1): count = 0 for i in range(1, n - 1 - j) if list[i] > list[i + 1] list[i], list[i + 1] = list[i + 1], list[i]
第六,七行比較相鄰兩個元素的大小,如果當前元素(list[i])大于下一個元素(list[i + 1]),則交換兩個元素的值。
def bubble_sort(list): n = len(list) for j in range(n - 1): count = 0 for i in range(0, n - 1 - j): if list[i] > list[i + 1]: list[i], list[i + 1] = list[i + 1], list[i] count += 1 if count == 0: break
第八,九,十行。記錄交換的次數(shù),但 count == 0 代表沒有交換,序列已經有序。
寫在最后歡迎大家關注我的公眾號「癡海」,每天分享 Python 知識。后臺回復「python爬蟲」,免費領取最新 python 教學視頻。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/41572.html
摘要:常見的內部排序算法有插入排序希爾排序選擇排序冒泡排序歸并排序快速排序堆排序基數(shù)排序等。插入排序在實現(xiàn)上,通常采用排序即只需用到的額外空間的排序,因而在從后向前掃描過程中,需要反復把已排序元素逐步向后挪位,為最新元素提供插入空間。 常見的內部排序算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸并排序、快速排序、堆排序、基數(shù)排序等。用一張圖概括: showImg(https://segm...
摘要:常見的內部排序算法有插入排序希爾排序選擇排序冒泡排序歸并排序快速排序堆排序基數(shù)排序等。插入排序在實現(xiàn)上,通常采用排序即只需用到的額外空間的排序,因而在從后向前掃描過程中,需要反復把已排序元素逐步向后挪位,為最新元素提供插入空間。 常見的內部排序算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸并排序、快速排序、堆排序、基數(shù)排序等。用一張圖概括: showImg(https://segm...
摘要:常見的內部排序算法有插入排序希爾排序選擇排序冒泡排序歸并排序快速排序堆排序基數(shù)排序等。插入排序在實現(xiàn)上,通常采用排序即只需用到的額外空間的排序,因而在從后向前掃描過程中,需要反復把已排序元素逐步向后挪位,為最新元素提供插入空間。 常見的內部排序算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸并排序、快速排序、堆排序、基數(shù)排序等。用一張圖概括: showImg(https://segm...
摘要:歸并排序歸并排序,或,是創(chuàng)建在歸并操作上的一種有效的排序算法,效率為大符號。以此類推,直到所有元素均排序完畢。與快速排序一樣都由托尼霍爾提出的,因而也被稱為霍爾選擇算法。 showImg(https://segmentfault.com/img/remote/1460000019096360);編譯:周素云、蔣寶尚 學會了Python基礎知識,想進階一下,那就來點算法吧!畢竟編程語言只...
摘要:常見的內部排序算法有插入排序希爾排序選擇排序冒泡排序歸并排序快速排序堆排序基數(shù)排序等。用一張圖概括歸并排序英語,或,是創(chuàng)建在歸并操作上的一種有效的排序算法,效率為。 常見的內部排序算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸并排序、快速排序、堆排序、基數(shù)排序等。用一張圖概括: showImg(https://segmentfault.com/img/bVNwuO?w=966&h=...
閱讀 3245·2023-04-26 01:31
閱讀 1892·2023-04-25 22:08
閱讀 3430·2021-09-01 11:42
閱讀 2823·2019-08-30 12:58
閱讀 2165·2019-08-29 18:31
閱讀 2429·2019-08-29 17:18
閱讀 3064·2019-08-29 13:01
閱讀 2552·2019-08-28 18:22