常用排序演算法:直接選擇排序
阿新 • • 發佈:2018-12-16
直接選擇排序演算法思路:
第 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]