算法实现
def select_sort(data_set):
n = len(data_set)
for i in range(n-1): # 第i趟
min_ind = i # 记录最小值的下标
for j in range(i+1, n): # 假定初始的最小值的下标为i,则从i+1开始和min_ind的值比较
if data_set[min_ind] > data_set[j]:
min_ind = j
if not min_ind == i: #如果最小的就是初始假设的i本身,则不需要交换
data_set[i], data_set[min_ind] = data_set[min_ind], data_set[i]
if __name__ == '__main__':
li = [37, 6, 45, 32, 79, 79, 93, 57, 22, 21, 3, 43, 28, 85, 50, 4, 20, 1, 23, 98]
select_sort(li)
print(li)
算法复杂度
O(n²)
两层循环,和冒泡排序一样,虽然第二层循环的范围是不断缩小的,但是总的级别,还是在n²。