選擇排序:
首先從待排序的資料中選出最小(或最大)的乙個元素,放在已排序序列的末尾,然後再從剩餘未排序元素中繼續尋找最小(或最大)元素,放到已排序序列的末尾,以此類推,直到全部待排序的資料元素排完。選擇排序是不穩定的排序方法。
示例:
# 查詢陣列中最小元素,並返回對應索引
def findsmallest(arr):
smallest = arr[0] #初始對比值及索引
smallest_index = 0
chang = len(arr)
for i in range(1, chang):
if arr[i] < smallest:
smallest = arr[i] #對最小值及索引重新賦值
smallest_index = i
return smallest_index
選擇排序一:
def selectionsort(arr):
newarr =
chang = len(arr)
for i in range(chang):
smallest_index = findsmallest(arr) #獲取最小值索引
return newarr
arr = [5, 3, 2, 7, 9]
print(selectionsort(arr))
結果為:
[2, 3, 5, 7, 9]
選擇排序二:
def selectionsort2(alist):
n = len(alist) - 1 #此處減1可減少下方遍歷時重複計算
for fillslot in range(n, 0, -1): #共需遍歷n次,因1個元素是不需要再遍歷的
positionofmax = 0 #初始化最大元素索引為0
for location in range(1, fillslot + 1): #迴圈遍歷獲取本輪最大元素索引
if alist[location] > alist[positionofmax]: #若當前元素大於初始化最大元素,則
positionofmax = location #更新最大元素索引為當前索引
alist[fillslot], alist[positionofmax] = alist[positionofmax], alist[fillslot] #交換位置
alist = [54, 26, 93, 17, 77, 31, 44, 55, 20]
selectionsort2(alist)
print(alist)
結果為:
[17, 20, 26, 31, 44, 54, 55, 77, 93]
python選擇排序之簡單選擇排序
簡單選擇排序 從無序數列中選取最小的元素和無序數列中的第乙個元素交換,每輪都可以確定最小元素的位置。1.迴圈取無序序列中的第乙個元素 2.迴圈和後面的元素一一比較,直到選到乙個最小的數,將它放在第一位 將無序數列變有序 coding utf 8 def selectsort series for i...
Python 經典排序之選擇排序
選擇排序 selection sort list 4,3,1,2,5 n len list 陣列長度 print 列表長度為 d n print 開始選擇排序 print n for i in range 0,n print 當前是第 d輪排序 i for j in range i 1,n prin...
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...