一,介紹
氣泡排序(bubble sort)也是一種簡單直觀的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢"浮"到數列的頂端。
作為最簡單的排序演算法之一,氣泡排序給我的感覺就像 abandon 在單詞書裡出現的感覺一樣,每次都在第一頁第一位,所以最熟悉。氣泡排序還有一種優化演算法,就是立乙個 flag,當在一趟序列遍歷中元素沒有發生交換,則證明該序列已經有序。
二,演算法步驟
對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。
三,相關問題
1. 什麼時候最快
當輸入的資料已經是正序時(都已經是正序了,我還要你氣泡排序有何用啊)。
2. 什麼時候最慢
當輸入的資料是反序時(寫乙個 for 迴圈反序輸出資料不就行了,幹嘛要用你氣泡排序呢)。
四,**實現
python版本
#氣泡排序,時間複雜度o(n²)
defbubble_sort(num):
"""如果氣泡排序中的一次排序沒有發生交換,則說明列表已經有序,可以直接結束演算法
:param num:
:return:
"""for i in range(len(num) - 1):
exchange =false
(num)
for j in range(len(num) - 1 -i):
if num[j] > num[j + 1]:
num[j], num[j + 1] = num[j + 1], num[j]
exchange =true
ifnot
exchange:
return
num
return
numl = [33, 11, 12, 1, 2, 3, 4, 5, 22]
print(bubble_sort(l))
functionbubblesort(arr) }}
return
arr;
}
golang版本
func bubblesort(arr int) int}}return
arr}
Python排序演算法 氣泡排序
def bubblesort seq length len seq for i in range length for j in range length 1,i,1 if seq j 1 seq j seq j 1 seq j seq j seq j 1 if name main seq 2,9,...
python 排序演算法 氣泡排序
所謂氣泡排序就是 將乙個數列中的數字兩兩之間進行比較,如果第乙個元素大於或小於第二個元素,那麼就將兩個元素位置交換,然後這個小或大值再往下兩兩比較,使最大或最小值慢慢浮到數列的最頂端,這樣的排序演算法我們稱之為氣泡排序。1 首先要獲取乙個數列,或者說乙個容器,那麼len 容器 2,否則我想排序就沒有...
Python氣泡排序演算法
coding utf 8 氣泡排序演算法 import random fenshu int input 請輸入考試滿分 renshu int input 請輸入考試人數 sortsre input 倒敘 正序 請選擇 y n while sortsre y and sortsre n print 您...