所謂選擇排序,它是排序演算法中,一種簡單、直觀且靈巧的排序演算法,但是速度不是很快。選擇排序,見名思意就是選擇乙個元素,與其他元素進行比較,將乙個個的最大或最小值拿出來,放到另乙個列表中的這個過程,或者說行為我們稱之為選擇排序。
(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演算法 選擇排序
眾所周知,我們記憶體的工作原理就像我們逛商場時的存物櫃,每個櫃子只能放進乙個物品,你有兩樣物品要存,將物品存進 放進 櫃子裡後,你就可以去逛商場了 計算機就是多個櫃子的集合,每個單獨的櫃子都有自己的位址 而當我們需要存多個資料的時候,我們有兩種基本方式 陣列和鍊錶 我們還是拿我們的日常生活舉個栗子,...