選擇排序(selection sort)是一種簡單直觀的排序演算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。
選擇排序的主要優點與資料移動有關。如果某個元素位於正確的最終位置上,則它不會被移動。選擇排序每次交換一對元素,它們當中至少有乙個將被移到其最終位置上,因此對n個元素的表進行排序總共進行至多n-1次交換。在所有的完全依靠交換去移動元素的排序方法中,選擇排序屬於非常好的一種。
排序過程:
時間複雜度:o(n2)
穩定性:不穩定(考慮公升序每次選擇最大的情況)
'''def selectsort(alist):
'''選擇排序'''
n = len(alist)
for i in range(n-1):
# 把未排序的第乙個看做最小,依次與後面未排序的進行比較
min_index = i
for j in range(i+1, n):
# 如果不是最小,讓min_index等於最小數的下標
if alist[min_index] > alist[j]:
min_index = j
# 比較結束後,即找出了最小的值,把它放在已排序的後面
alist[i], alist[min_index] = alist[min_index], alist[i]
if __name__ == '__main__':
alist = [3,4,6,34,1,2,43,5,8,6,56,9,7,4]
print(alist)
select_sort = selectsort(alist)
print(alist)
執行結果:
/home/longhui/desktop/資料結構與演算法/venv/bin/python /home/longhui/desktop/資料結構與演算法/venv/mycode/6_sorting_and_searching/selection_sort.py
[3, 4, 6, 34, 1, 2, 43, 5, 8, 6, 56, 9, 7, 4]
[1, 2, 3, 4, 4, 5, 6, 6, 7, 8, 9, 34, 43, 56]
process finished with exit code 0
Python實現選擇排序
選擇排序 一種簡單直觀的排序演算法。工作原理 首先在未排序序列中找到最小 大 元素,存放到排序序列的起始位置,然後,再從剩餘的未排序的元素中繼續尋找最小 大 元素,然後放到已排序的末尾。直到所有元素均排序完畢。優點 選擇排序與資料移動有關。如果某個元素位於正確的最終位置上,則它不會被移動。選擇排序每...
Python實現選擇排序
實現思路 將乙個序列分為兩部分,前面是有序序列,後面是無序序列,不斷的將後面的無序序列中的最小值新增到前面的有序序列中,直到後面的無序序列中沒有值,開始的時候將第乙個值作為有序序列。實現 arr 7,4,3,67,34,1,8 length 7 defselect sort arr n len ar...
選擇排序python實現
選擇排序 selection sort 是一種簡單直觀的排序演算法。它的工作原理是每一次從待排序的資料元素中選出最小 或最大 的乙個元素,存放在序列的起始位置,直到全部待排序的資料元素排完。注意每次查詢到最小值之後要將之從原列表中彈出,避免重複查詢。1 deffindsmallest d 2 sma...