部分转自 https://blog.csdn.net/Dby_freedom/article/details/82154869
介绍 :
选择排序是一个很容易理解和实现的简单排序算法. 学习它之前首先要知道它有两个很鲜明的特点
1. 运行时间和输入无关
选择排序,是通过每次选择最小的数或者最大的数,然后将它放在它应该出现的位置上。
所以,选择排序的时间复杂度是O(N*N),不管是最好情况还是最坏情况,找最小数的过程都需要遍历一遍,所以,选择排序最好情况也是O(N*N)。
因此,使用这种算法的我们会惊讶的发现,一个已经有序的数组或者数组内元素全部相等和一个打乱的序列所用的时间是一样长的
2. 数据移动是最少的
选择排序的交换次数和数组大小关系是线性的,选择无疑是最简单直观的排序.看下面的原理时可以很容易明白这一点
步骤:
- 在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
- 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
- 以此类推,直到所有元素均排序完毕。
代码
def select_sort(lst):
n = len(lst)
for i in range(n):
min = i
for j in range(i+1,n):