Day2 選擇排序

2021-10-12 11:28:47 字數 2286 閱讀 4217

day 2 演算法題:寫出選擇排序

又找到乙個更小的值2,重新標記它為紅色:

一輪比較後,找到最小值2並標記為黃色,表示就位,繼續在未排序序列中尋找最小值:

#錯誤出在這裡,換位置是都要帶著元素再列表中的索引的,這裡相當於用min的值替換了j位置的值

return our_list #並沒有實現交換位置

list=[

1,5,

3,2,

8]b = selec_sort(

list

)b

[1, 5, 5, 5, 8]
#改正

defselec_sort

(our_list)

: n =

len(our_list)

count =

0for i in

range

(n-1):

min= our_list[i]

for j in

range

(i+1

,n):

ifmin

> our_list[j]

: our_list[i]

, our_list[j]

= our_list[j]

, our_list[i]

count +=

1print

('交換次數'

,count)

return our_list

list=[

1,5,

3,2,

8]b = selec_sort(

list

)b

交換次數 3

[1, 2, 3, 5, 8]

def

selec_sort

(our_list)

: n =

len(our_list)

count =

0#統計交換的次數

for i in

range

(n-1):

min_index = i #最小值的索引標籤

for j in

range

(i+1

, n):if

list

[j]<

list

[min_index]

: min_index = j #這裡不交換,僅僅是存起來

if min_index != i:

#加入判斷,以防不需要交換的情況

our_list[i]

, our_list[min_index]

= our_list[min_index]

, our_list[i]

count +=

1print

('交換次數'

,count)

return our_list

list=[

1,5,

3,2,

8]b = selec_sort(

list

)b

交換次數 1

[1, 2, 3, 5, 8]

可以看到跟原來演算法相比減少了交換的次數

Day2 選擇排序

參考本文對選擇排序的一些提示,在星球內記錄 及思考過程。選擇排序是一種簡單直觀的排序演算法,無論什麼資料進去都是 o n 的時間複雜度。所以用到它的時候,資料規模越小越好。唯一的好處可能就是不占用額外的記憶體空間了吧。首先在未排序序列中找到最小 大 元素,存放到排序序列的起始位置 再從剩餘未排序元素...

快速排序 day 2

問題 給定乙個長度為n的整數數列,以及乙個整數k。請用快速選擇演算法求出數列的第k小的數是多少。輸入格式 第一行包含兩個整數 n 和 k。第二行包含 n 個整數 所有整數均在1 1000000範圍內 表示整數數列。輸出格式 輸出乙個整數,表示數列的第k小數。資料範圍 1 n 1000000,1 k ...

Day2 氣泡排序bubble sort

氣泡排序bubble sort 冒泡演算法,取list中從第乙個元素開始,與它後面的元素比較,如果比它大,就交換位置,一直重複到它能到達的位置,每次遍歷都將 剩下的元素中最大的那個放在序列的最後,如如果完成排序,則可以退出了。輪詢次數為 list 1次,並且每輪詢一次list的數量減去1 pytho...