Python 直接選擇排序

2021-06-25 17:03:21 字數 1491 閱讀 4970

基本思想

從要排序的陣列中選出最小(或最大)的數,與第一位交換,再從剩下的陣列中選擇最小(或最大)

的數,與第二位交換,以此執行,直到最後兩個數相比較。

python實現

def ******select(a):

# 簡單選擇排序: 小->大

for i in xrange(0, len(a) - 1):

x = min(a[i:])

x_index = a.index(x)

a[i], a[x_index] = a[x_index], a[i]

return a

print ******select([11, 1, 6, 9, 8, 5])

python實現--不使用自帶的min函式

def ******select(a):

# 簡單選擇排序: 小->大

for i in xrange(0, len(a) - 1):

min_index = i

for j in xrange(i, len(a)):

if a[min_index] > a[j]:

min_index = j

a[i], a[min_index] = a[min_index], a[i]

return a

print ******select([11, 1, 6, 9, 8, 5])

python實現--二元選擇排序

def ******select(a):

# 二元選擇排序: 小->大

# 對簡單選擇排序的改進,同時選出最大和最小,迴圈為 n / 2

n = len(a)

for i in xrange(0, n / 2):

min_index = i

max_index = i

for j in xrange(i + 1, n - i):

if a[min_index] > a[j]:

min_index = j

continue

if a[max_index] < a[j]:

max_index = j

a[i], a[min_index] = a[min_index], a[i]

# 注意,這個很重要!

if i == max_index:

max_index = min_index

a[n - i - 1], a[max_index] = a[max_index], a[n - i - 1]

return a

print ******select([11, 1, 6, 9, 8, 5])

效率

o(n^2)

選擇排序 直接選擇排序

演算法思想 在每一趟的排序中,從待排序列中選出關鍵字最小或者最大的元素放在其最終的位置上 過程分析 在第i趟直接排序中,通過n i次關鍵字的比較,從n i 1個元素中選出關鍵字最小的元素 與第i個元素進行交換。經過n 1趟比較,直到表有序為止 效能分析 時間複雜度o n 2 include defi...

選擇排序 直接選擇排序

直接選擇排序也成為簡單選擇排序。對於乙個待排序數列,每次從無序區選擇乙個最小的元素,放入有序區 初始時有序區為空 直到無序區元素只有乙個 即整個數列的最大值 具體操作 第i趟排序開始,數列分為有序區a 0,i 1 和無序區a i,n 1 從無序區中選擇最小元素a k 將a k 放在無序區的最左邊的位...

選擇排序 直接選擇排序

直接選擇排序 straight select sorting 也是一種簡單的排序方法,它的基本思想是 第一次從r 0 r n 1 中選取最小值,與r 0 交換,第二次從r r n 1 中選取最小值,與r 1 交換,第i次從r i 1 r n 1 中選取最小值,與r i 1 交換,第n 1次從r n ...