对于排序算法的时间效率,一般可以从比较次数(compares)和交换次数(exchanges)这两个指标上来综合考虑。
选择排序
核心思想是每次在剩余的(n-k)个元素中,找到最小的那个,然后与数组第k位元素交换(如果不相同)。之所以叫选择排序,就因为算法的每次迭代都是为了挑选出剩余元素中最小的那个元素。
特点有二:
- 输入不敏感;
- 交换次数是最少。

插入排序
核心思想是每次将第k个元素插入到前k-1个已排好序的元素中一个合适位置m,并将原来处在[m,k-1]位置的元素均向右移动一位。
特点有二:
- 输入敏感,排序已经有一定顺序的数组会比排序完全随机的数组要快。
- 面对部分排序(partially sorted)的数组,插入排序的速度表现很可能会是最好的排序算法:(1)一个数组其元素离其排好序后的最终位置并不远;(2)一个小数组拼在一个大的已排好序的数组之后;(3)一个数组只有少量的元素不在其合适的位置上。

网友评论