思路
- 找出最小值並放入新陣列依序排列
- 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
也可以透過內建函式達到一樣效果,具體流程如下:
- min() 取出最小值
- remove 在 nums 內的最小值
- append 進入新陣列
def selectSort2(self, nums):
result = []
while nums:
smallest = min(nums) # 取出最小值
nums.remove(smallest) # 刪除最小值
result.append(smallest) # 加入新陣列
return result