算法描述:
在待排序列中找到最小(大)元素,存放到待排序列的起始位置
再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
重复第二步,直到所有元素均排序完毕。
冒泡排序是和相邻元素两两相比,选择排序是与所有未排序的元素相比。
选择排序的进阶版就是:堆排序
代码实现:
第1趟,在待排序记录r1 ~ r[n]中选出最小的记录,将它与r1交换;
第2趟,在待排序记录r2 ~ r[n]中选出最小的记录,将它与r2交换;
以此类推,第i趟在待排序记录r[i] ~ r[n]中选出最小的记录,将它与r[i]交换,使有序序列不断增长直到全部排序完毕。
def select_sort(lst):
for i in range(len(lst)):
min = i
for j in range(i+1,len(lst)):
if lst[j] < lst[min]:
min = j
lst[min],lst[i] = lst[i],lst[min]
return lst
if __name__ == "__main__":
data = [50, 10, 90, 30, 70, 40, 80, 60, 20]
print(data)
select_sort(data)
print(data)
算法性能:
时间复杂度:O(n**2)