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