bubble sort 背後的想法非常簡單,我們檢視陣列中相鄰的成對元素,一次檢視一對。
如果第乙個元素大於第二個元素,則交換它們的位置,否則將它們繼續移動。
def
bubble_sort
(our_list)
:for i in
range
(len
(our_list)-1
):if our_list[i]
> our_list[i+1]
: our_list[i]
, our_list[i+1]
= our_list[i+1]
, our_list[i]
return our_list
list=[
8,3,
2,5,
1,4]
b = bubble_sort(
list
)b
[3, 2, 5, 1, 4, 8]
這樣只進行了一次冒泡,並未完成
每一次冒泡都只有乙個資料冒泡成功,所以要比較的次數就是這列陣列中含有的資料的個數
def
bubble_sort
(our_list)
:for j in
range
(len
(our_list)):
for i in
range
(len
(our_list)-1
):if our_list[i]
> our_list[i+1]
: our_list[i]
, our_list[i+1]
= our_list[i+1]
, our_list[i]
return our_list
a =[8,
3,2,
5,1,
4]b = bubble_sort(a)
print
(b)
[1, 2, 3, 4, 5, 8]
可改進的點:
1、如果原來的陣列就是有序的,即在第一次冒泡的時候沒有發生陣列位置的交換,那麼就可以不用接著迴圈
2、每一次冒泡都可以保證有乙個資料冒出來,所以在後一次冒泡的時候可以不去和最末尾的乙個進行比較
def
bubble_sort
(our_list)
:true
#判斷是否有序的標誌,開始時置為真
n =len(our_list)
num_of_iterations =
0#控制遍歷次數,沒經過一次冒泡可以少比較一次
while
:false
for i in
range
(len
(our_list)
- num_of_iterations -1)
:if our_list[i]
> our_list[i+1]
:# swap
our_list[i]
, our_list[i+1]
= our_list[i+1]
, our_list[i]
true
num_of_iterations +=
1return our_list
a =[8,
3,2,
5,1,
4]b = bubble_sort(a)
print
(b)
[1, 2, 3, 4, 5, 8]
排序演算法Day1
include mysort.h include include include include include include include using namespace std 插入排序 時間複雜度 平均哦o n 2 完全有序時o n 空間複雜度o 1 穩定 思想 把待排序列分為有序序列和無...
演算法營day1
題目描述 在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。思路1 充分考慮到該二維陣列的特點,每一行是公升序的,每一列也是公升序的。通過target和矩陣右上...
基本演算法學習day1
反轉陣列 leecode242.有效的字母異位詞 方法 建立26位的int陣列,用來存放對應第幾個字母的個數 遍歷 s讓相應的值 遍歷 t讓相應的值 最後如果陣列中有乙個值不為0則返回false 給定兩個字串 s 和 t 編寫乙個函式來判斷 t 是否是 s 的字母異位詞。示例 1 輸入 s anag...