問題
排序 [30, 24, 5, 58, 18, 36, 12, 42, 39]
選擇排序
選擇排序每次從待排序序列中選出最小(或最大)的元素,將其放到序列的起始位置,然后,再從剩余未排序元素中繼續尋找最小(或最大)元素,然后放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。
圖解
- 第一輪循環,遍歷數組,從中選出最小的元素,和起始位置元素進行交換
- 第二輪循環,遍歷剩余未排序元素,從中繼續尋找最小的元素,將其放到已排序的序列末尾
- 繼續循環遍歷,直到排序完成
代碼
def selection_sort(nums):n = len(nums)for i in range(n):min_index = ifor j in range(i+1, n):if nums[j] < nums[min_index]:min_index = jnums[i], nums[min_index] = nums[min_index], nums[i]return nums
時間復雜度
選擇排序的時間復雜度為 O(n2)