时间复杂度:
最优时间复杂度:O(n^2) 最坏时间复杂度:O(n^2) 稳定性:不稳定
思路:
1,将未排序的数组的第一个元素与后面所有的元素一一比较,如果大于后面某一个元素,就与其交换位置
2,这样一轮下来排在最前的第一个元素就是最小的那一个,然后再继续手环第1步找出第二小的元素
代码实现
def select_sort(array):
"""
选择排序
"""
n = len(array)
for i in range(n): # 取第一个数的下标
for j in range(i+1, n): # 取后面每一个数的下标
if array[i] > array[j]: # 前一个数与后一个数比较
array[i], array[j] = array[j], array[i]
return array
array = [5, 2, 7, 3, 1, 8, 6, 4, 9]
res = select_sort(array) # 选择排序
print(res)
输出结果
[1, 2, 3, 4, 5, 6, 7, 8, 9]