Python實現氣泡排序
走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換
慢慢“浮”到數列的頂端。氣泡排序對n個專案需要O(n*2)的比較次數,且可以原地排序。儘管這個演算法是最簡單瞭解和實現的排序演算法
之一,但它對於包含大量的元素的數列排序是很沒有效率的。
氣泡排序演算法的運作如下:
由於它的簡潔,氣泡排序通常被用來對於程式設計入門的學生介紹演算法的概念。
以上是百科上介紹的,可是,我有個疑問,僅僅是這個排序演算法簡單嗎?它是否有更深層次的應用呢?翻閱了很多資料,最後在一本
介紹演算法的老外書上,才看到這個演算法的實際價值在哪兒。(because the bubble sort makes passes through the entire unsorted portion of the list,
it has the capability to do something most sorting algorithms cannot。)意思很明顯,該演算法的的最大的價值就是能遍歷連結串列中所有的元素,這樣就能
做很多演算法無法做到的事情。這就是冒泡演算法的最大價值所在吧。
Python兩種實現的原始碼的測試結果:
def bubble_sort(a_list): for pass_num in range(len(a_list) - 1, 0, -1): for i in range(pass_num): if a_list[i] > a_list[i + 1]: temp = a_list[i] a_list[i] = a_list[i + 1] a_list[i + 1] = temp def short_bubble_sort(a_list): exchanges = True pass_num = len(a_list) - 1 while pass_num > 0 and exchanges: exchanges = False for i in range(pass_num): if a_list[i] > a_list[i + 1]: exchanges = True temp = a_list[i] a_list[i] = a_list[i + 1] a_list[i + 1] = temp pass_num = pass_num - 1 a_list = [54,26,93,17,77,31,44,55,20] bubble_sort(a_list) print(a_list)
輸出結果:
[17, 20, 26, 31, 44, 54, 55, 77, 93][20, 30, 40, 50, 60, 70, 80, 90, 100, 110]
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31543790/viewspace-2220507/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java實現氣泡排序Java排序
- Python 氣泡排序Python排序
- Golang實現氣泡排序法Golang排序
- Go實現氣泡排序和快速排序Go排序
- 氣泡排序(python版)排序Python
- Python_氣泡排序Python排序
- python實現氣泡排序、插入排序以及快速排序演算法Python排序演算法
- go 實現氣泡排序和插入排序Go排序
- php實現 氣泡排序,插入排序,選擇排序PHP排序
- 用JS實現氣泡排序和插入排序JS排序
- java氣泡排序演算法實現Java排序演算法
- 排序——氣泡排序排序
- 氣泡排序排序
- 9. 氣泡排序,以及如何優化氣泡排序,氣泡排序屬於插入排序排序優化
- 用go實現簡單的氣泡排序Go排序
- 排序:氣泡排序&快速排序排序
- Java實現氣泡排序和插入排序演算法Java排序演算法
- ForkJoin和氣泡排序組合實現的歸併排序排序
- 容器氣泡排序排序
- 氣泡排序法排序
- 氣泡排序(Java)排序Java
- 氣泡排序1排序
- 氣泡排序-fusha排序
- 氣泡排序演示排序
- Shell氣泡排序排序
- d氣泡排序排序
- js氣泡排序JS排序
- JavaScript氣泡排序JavaScript排序
- 函式氣泡排序函式排序
- 19_氣泡排序排序
- 氣泡排序筆記排序筆記
- 淺析氣泡排序排序
- 陣列氣泡排序陣列排序
- 氣泡排序與選擇排序排序
- 【排序】氣泡排序(待補充)排序
- 排序演算法--氣泡排序排序演算法
- 排序演算法__氣泡排序排序演算法
- 排序演算法–氣泡排序排序演算法