选择排序是在n个元素的数组中寻找最小值,然后将其放在第一个位置,接着在剩余的n-1个元素中寻找次小值,将其放在第二个位置,以此类推直到排序完毕。选择排序是一种基于元素比较的排序方法。其优点是实现简单、代码易读,时间复杂度在最坏情况下也只有O(n²)。缺点是速度相对较慢,只适合对小规模数据进行排序,对于大规模数据排序效率不高。
整个过程可以理解成每次从未排序的元素中选出最小值与该次排序的起始位置的元素进行交换,逐步将最小元素逐渐“沉”到数组的顶端。由于每次选择的是最小的元素,所以排序是不稳定的。
选择排序的优化方式有两种。第一种是通过减少比较次数来优化,具体实现方式是每次选择最小和最大两个元素,分别放到起始和末尾位置。第二种是通过减少交换次数来优化,具体实现方式是记录下最小值的位置,不用每次都交换。