python 排序演算法 選擇排序

2021-10-09 03:11:55 字數 1868 閱讀 5799

​ 所謂選擇排序,它是排序演算法中,一種簡單、直觀且靈巧的排序演算法,但是速度不是很快。選擇排序,見名思意就是選擇乙個元素,與其他元素進行比較,將乙個個的最大或最小值拿出來,放到另乙個列表中的這個過程,或者說行為我們稱之為選擇排序。

​ (1)首先得有乙個需要排序的列表,比如數字列表

​ (2)拿到這個列表以後,我們需要建立乙個新的空列表,作為排序後返回的列表

​ (3)那麼外迴圈是必須要有的,迴圈的次數呢是列表的長度,因為我們要對列表中的每乙個元素進行一系列的操作

​ (4)迴圈體裡面需要乙個函式,這個函式為整個演算法的核心,這個函式的工作是要拿到這個列表中的極端值,就是最大或者最小值。因為我們不知道這個這個列表中的最大或者最小值是哪乙個,所以我們必須選擇乙個假設為極端值,為了更好的迴圈和處理元素,我們拿取第乙個元素與列表中的其他值做比較,當比該元素小就記錄該值和該值在列表中的索引,最後返回乙個索引。

​ (5)當呼叫該函式並返回乙個索引後,我們要通過該索引拿到列表中對應的值,並刪除該列表中的這個索引的元素,這裡就用到了乙個方法 pop ,刪除該列表中的此索引的元素,並返回該值

​ (6)此時,因為刪除了乙個極端值,所以該列表中的下標索引就會全部向前移動乙個位置,這樣每次呼叫函式的時候,就保證了每次拿到的索引都是極端值索引

​ (7)將每次拿到的極端值儲存到新列表的末端

​ (8)當for迴圈迭代完成之後,我們要返回新的列表,該列表就是排好序的列表

​ **注意:**這裡只詳細介紹公升序排列,即 小 ==> 大 排列,那麼從大到小排列只需要修改判斷條件即可實現

def

small

(list):

# 假設最小元素是第乙個元素

small_element =

list[0

]# 那麼索引就為0

small_index =

0# 遍歷從1開始的索引

for index in

range(1

,len

(list))

:# 依次與最小元素進行比較

iflist

[index]

< small_element:

# 如果比最小元素小,那麼該值就變為最下元素

small_element =

list

[index]

# 並拿到該元素的索引

small_index = index

# 最後返回最小元素的索引

return small_index

defsort

(oldlist)

:# 建立乙個空列表,來儲存排好序的元素

new_list =

for element in

range

(len

(oldlist)):

# 拿到最小索引

least_index = small(oldlist)

# 在舊的列表中將該索引的元素的刪除,並返回該元素的值,並將該值新增到新列表末尾

)# 最後返回新列表

return new_list

if __name__ ==

'__main__'

: mylist =[12

,34,11

,76,1

,9,39

,788

] newlist = sort(mylist)

print

(newlist)

執行結果如下:

[1,

9,11,

12,34,

39,76,

788]

process finished with exit code 0

Python排序演算法之選擇排序

在一趟排序過程中記錄最小的數,放到第乙個位置上 再來一趟排序記錄無序區最小的數,放到第二個位置上 依次類推 最壞情況 o n 2n 2 n2 平均情況 o n 2n 2 n2 最好情況 o n 2n 2 n2 o 1 不穩定 簡單 趟數 n 1 無序區範圍 趟數 1 n usr bin python...

Python 演算法 選擇排序

coding utf 8 選擇排序 defselect sort lst 基本思想 第1趟,在待排序記錄r1 r n 中選出最小的記錄,將它與r1交換 第2趟,在待排序記錄r2 r n 中選出最小的記錄,將它與r2交換 以此類推,第i趟在待排序記錄r i r n 中選出最小的記錄,將它與r i 交換...

python演算法 選擇排序

眾所周知,我們記憶體的工作原理就像我們逛商場時的存物櫃,每個櫃子只能放進乙個物品,你有兩樣物品要存,將物品存進 放進 櫃子裡後,你就可以去逛商場了 計算機就是多個櫃子的集合,每個單獨的櫃子都有自己的位址 而當我們需要存多個資料的時候,我們有兩種基本方式 陣列和鍊錶 我們還是拿我們的日常生活舉個栗子,...