Day1 冒泡演算法 1

2021-10-12 11:26:45 字數 1866 閱讀 1642

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...