选择排序

选择排序selection sort )是一种简单直观的排序算法。它的工作原理分为两步:

  1. 从未排序序列中找到最小元素(如果希望降序排序,则找最大元素);
  2. 将最小元素交换到未排序序列的起始位置;

排序过程需要不断重复上述两个步骤,直到序列完全有序。

由于寻找最小元素需要遍历整个序列,时间复杂度是 $O(n)$ ;选择排序需要执行 $n-1$ 次选择,因此时间复杂度是 $O(n^2)$ 。由此可见,选择排序表现并不出色,但胜在简单,多用于 小规模 排序场景。

查找最小元素

从无序序列中查找最小元素,需要遍历整个序列:

  1. 用临时变量 $min$ 记录当前看到的最小元素,刚开始时指向第一个元素;
  2. 遍历余下元素,逐一与 $min$ 比较,如果当前元素更小,则更新 $min$ 指向当前元素;

搜索过程如以下动画所示,应该不难理解:

寻找最小元素示例代码如下,结合注释和上述动画应该很好理解:

选择排序

选择排序需要执行 $n-1$ 次循环,每次从未排序序列中找出最小元素,并将它交换到序列头部:

选择排序示例代码如下:

小菜学算法】系列文章首发于公众号【小菜学编程】,敬请关注: