常用排序演算法 直接選擇排序

2022-09-16 00:09:23 字數 774 閱讀 8946

第 1 趟,在待排序記錄 r1 ~ r[n]中選出最小的記錄,將它與 r1 交換;第 2 趟, 在待排序記錄 r2 ~ r[n]中選出最小的記錄,將它與 r2 交換;以此類推,第 i 趟在待排序 記錄 r[i] ~ r[n]中選出最小的記錄,將它與 r[i]交換,使有序序列不斷增長直到全部排序 完畢。

例如[2, 4, 3, 1, 0],第一趟找到最小值為0,將0和第一位交換,得到[0, 4, 3, 1, 2],第二趟從[4, 3, 1, 2]中找到最小值1,再和第一位交換得到[0, 1, 3, 4, 2],以此類推知道排序完成。

def select_sort(nums):

for i in range(len(nums)): # 第i趟開始時 無序區為:[i:]

min_pos = i # 最小值位置

for j in range(i + 1, len(nums)): # 在無序區裡面找最小值,並記錄位置

if nums[j] < nums[min_pos]:

min_pos = j

nums[min_pos], nums[i] = nums[i], nums[min_pos] # 交換

print(nums)

select_sort([2, 4, 3, 1, 0])

# [0, 4, 3, 1, 2]

# [0, 1, 3, 4, 2]

# [0, 1, 2, 4, 3]

# [0, 1, 2, 3, 4]

# [0, 1, 2, 3, 4]

常用排序演算法 直接選擇排序

第 1 趟,在待排序記錄 r1 r n 中選出最小的記錄,將它與 r1 交換 第 2 趟,在待排序記錄 r2 r n 中選出最小的記錄,將它與 r2 交換 以此類推,第 i 趟在待排序 記錄 r i r n 中選出最小的記錄,將它與 r i 交換,使有序序列不斷增長直到全部排序 完畢。例如 2,4,...

排序演算法(直接選擇排序)

為什麼我們要叫直接選擇排序呢?在最開始的時候,待排序區間是整個陣列,從區間選乙個最小的與區間第乙個交換位置,然後將待排序區間從第二個開始,繼續以上操作,直至待排序區間長度為0 我們還是以為例 初始 3 5 7 9 8 6 2 1 4 0 第一趟 05 7 9 8 6 2 1 4 3 第二趟 0 17...

排序演算法 直接選擇排序

選擇排序的基本思想是 每一趟從待排序的記錄中選出關鍵字最小的記錄,順序放入已排序數列的最後,直到全部記錄排序完畢。直接選擇排序是一種簡單直觀的排序演算法。它的工作原理 首先在未排序序列中找到最小 大 元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小 大 元素,然後放到已排序序列...