選擇排序:一種簡單直觀的排序演算法。
工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然後,再從剩餘的未排序的元素中繼續尋找最小(大)元素,然後放到已排序的末尾。直到所有元素均排序完畢。
優點:選擇排序與資料移動有關。如果某個元素位於正確的最終位置上,則它不會被移動。選擇排序每次交換一對元素,它們當中至少有乙個將被一道其最終位置上,因為對n個元素的表進行排序總共進行至多n-1次交換。在所有的完全依靠交換去移動元素的排序方法中,選擇排序屬於非常好的一種。
使用python**實現選擇排序:
# list 傳遞的引數,order排序 預設為1,公升序,否則降序,僅支援整數型別
def selectsort(list, order=1):
if not isinstance(order, int):
raise typeerror('order型別錯誤')
for i in range(len(list) - 1):
# 記錄最小位置
min_index = i
# 篩選出最小資料
for j in range(i + 1, len(list)):
if order == 1:
if list[j] < list[min_index]:
min_index = j
else:
if list[j] > list[min_index]:
min_index = j
# 交換位置
if min_index != i:
list[i], list[min_index] = list[min_index], list[i]
print list
selectsort([1, 4, 9, 6, 3, 100], 1)
時間複雜度:
最優時間複雜度:o(n^2)
最壞時間複雜度:o(n^2)
穩定性:不穩定(考慮公升序每次選擇最大的情況)
動態圖演示:
Python實現選擇排序
實現思路 將乙個序列分為兩部分,前面是有序序列,後面是無序序列,不斷的將後面的無序序列中的最小值新增到前面的有序序列中,直到後面的無序序列中沒有值,開始的時候將第乙個值作為有序序列。實現 arr 7,4,3,67,34,1,8 length 7 defselect sort arr n len ar...
python實現選擇排序
選擇排序 selection sort 是一種簡單直觀的排序演算法。它的工作原理如下。首先在未排序序列中找到最小 大 元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小 大 元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。選擇排序的主要優點與資料移動有關。如果某...
選擇排序python實現
選擇排序 selection sort 是一種簡單直觀的排序演算法。它的工作原理是每一次從待排序的資料元素中選出最小 或最大 的乙個元素,存放在序列的起始位置,直到全部待排序的資料元素排完。注意每次查詢到最小值之後要將之從原列表中彈出,避免重複查詢。1 deffindsmallest d 2 sma...