选择排序的概念
选择排序(Selection sort)是一种简单直观的排序算法。
它的工作原理如下。首先在未排序序列中找到最小(大)元素,
存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,
然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。
选择排序每次交换一对元素,
它们当中至少有一个将被移到其最终位置上,因此对n个元素的表进行排序总共进行至多n-1次交换。
在所有的完全依靠交换去移动元素的排序方法中,选择排序属于非常好的一种。
排序过程
动态示例
红色表示当前最小值,黄色表示已排序序列,蓝色表示当前位置
实现选择排序
会依次找出最小(最大)的;
从头或者最尾端选择一个数作为最小或最大的数,作为基准,然后依次和下一个/前一个比较;
先让索引指向找出最小/最大的数,最后 再和基准交换
def select_sort(li):
n = len(li)
for j in range(n - 1): # 选择排序需要进行多少次过程
min_index = j
for i in range(j + 1, n):