插入排序:
每次按键值把未排序的数插入到已排序队列的适当位置,直到整个序列都排好序为止。
基本思想:假设待排序的记录存放在数组R[1..n]中。初始时,R[1]自成1个有序区,无序区为R[2..n]。从i=2起直至i=n为止,依次将R[i]插入当前的有序区R[1..i-1]中,生成含n个记录的有序区。
实例图如下:
算法步骤:
算法实现:
for (int i=low; i<high; i++)
for (int j=i; j>low && dest[j-1]>dest[j]; j--)
swap(dest, j, j-1);
一种改进的算法:二分插入排序,在把待排序数插入到排好序时,通过二分查找的方法找到插入的位置。
算法使用范围:对少量的数据比较高效。