def select_sort(arr):
"""
選擇排序
原理:選擇一個最大的數,放在最後,在剩餘的數中再選擇一個最大的數,放在倒數第二個位置,
如此反覆,直到最後一個也被選擇了出來,排序結束。
時間複雜度:O(n^2)
:param arr:
:return:
"""
size = len(arr)
for i in range(size):
# 尋找最小值
min_value = arr[i]
min_value_index = i
for k in range(i, size):
if arr[k] < min_value:
min_value = arr[k]
min_value_index = k
# 交換
arr[i], arr[min_value_index] = arr[min_value_index], arr[i]
return arr
if __name__ == '__main__':
import numpy
array = list(numpy.random.randint(0, 50, 20))
print(array)
# [9, 28, 9, 31, 8, 48, 45, 3, 24, 20, 33, 11, 5, 20, 22, 46, 4, 36, 21, 36]
print(select_sort(array))
# [3, 4, 5, 8, 9, 9, 11, 20, 20, 21, 22, 24, 28, 31, 33, 36, 36, 45, 46, 48]
Mr.bai