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