Python之選擇排序

2021-09-18 02:24:33 字數 1573 閱讀 7180

選擇排序:

首先從待排序的資料中選出最小(或最大)的乙個元素,放在已排序序列的末尾,然後再從剩餘未排序元素中繼續尋找最小(或最大)元素,放到已排序序列的末尾,以此類推,直到全部待排序的資料元素排完。選擇排序是不穩定的排序方法。

示例:

# 查詢陣列中最小元素,並返回對應索引

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...