1. 算法思想
插入排序属于减治法的减一技术,即每一趟排序后将问题的规模减 1,其基本思想是:依次将待排序序列中的每一个记录插入到一个已排好序的序列中,直到全部序列都已排好序。
2. 具体过程
- 将整个待排序的记录序列划分成有序区和无序区,初始时有序区为待排序记录序列中的第一个记录,无序区包括所有的剩余待排序的记录;
- 将无序区的第一个记录插入到有序区的合适位置,从而使无序区减少一个记录,有序区增加一个记录;
- 重复执行步骤2,直到无序区的记录为空
3. 动画演示

4. 代码实现
Java 代码实现插入排序算法(升序):
/**
* @author created by linjunhao
* @date 2020/3/27
* @description 插入排序
*/
public class InsertSort {
public void sort(int[] values, int start, int end) {
int temp, position;
//从第二个记录开始执行插入操作
for (int i = 1; i <= end; i++) {
//暂存待插入记录
temp = values[i];
//记录插入位置
position = i - 1;
//寻找插入位置
while (position != -1 && temp < values[position]) {
//比待插记录大的往后移动
values[position + 1] = values[position];
//插入位置往前移动
position--;
}
//把待查记录放在正确的位置上
values[position + 1] = temp;
}
}
}
4. 算法分析
- 插入排序算法的时间复杂度为