思路

  1. 找出最小值並放入新陣列依序排列
  2. n*n = O(n^2)

實作

def selectionSort(nums):
    result = [] # 結果陣列
    while nums:
        smallest = self.helper(nums)
        result.append(nums.pop(smallest)) # 取出最小值並放入新陣列
    return result

def helper(self, nums):
    smallest_i = 0
    smallest = nums[smallest_i]
    for i in range(1, len(nums)):
        if nums[i] < smallest: # 找出最小值
            smallest = nums[i] # 更新最小值
            smallest_i = i # 更新最小值索引
    return smallest_i

也可以透過內建函式達到一樣效果,具體流程如下:

  1. min() 取出最小值
  2. remove 在 nums 內的最小值
  3. append 進入新陣列
def selectSort2(self, nums):
    result = []
    while nums:
        smallest = min(nums) # 取出最小值
        nums.remove(smallest) # 刪除最小值
        result.append(smallest) # 加入新陣列
    return result