- 基本原理
对于给定的一组记录,初始时假设第一个记录自成一个有序序列,其余记录为无序序列。接着从第二个记录开始,按照记录的大小依次将当前处理的记录插入到其之前的有序序列中,知道最后一个记录插入到有序序列中为止。
- 程序如下
public class Test{ public static void insertSort(int[] a){ for(int i=1;i<a.length;i++){ int temp = a[i], j = i; if(temp<a[j-1]){ while(j>=1 && temp<a[j-1]){ a[j] = a[j-1]; j--; } } a[j] = temp; } } public static void main(String[] args){ int[] a = {7,6,4,8,9,3,2}; insertSort(a); for(int i=0;i<a.length;i++){ System.out.print(a[i]+" "); } } }
程序结果
- 算法分析
- 最好时间:O(n)
- 平均时间:O(n2)
- 最坏时间:O(n2)
- 辅助存储:O(1)
- 稳定性:稳定