插入排序是一种稳定的排序算法,它的思路是:
假定一个已经有序的序列,向这个序列中插入一个元素,使得加入这个元素后的序列整体有序。
下面是插入排序的核心代码:
for(int i=1;i<a.length;i++){//循环次数
for(int j=i-1;j>=0;j--){//比较次数
if(a[j+1]<a[j]){
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
对于给定的数组序列:
int[] a ={4,2,5,7,9,1,6};
它的排序过程是这样的:
第一步:数组序列{4}是有序的,向这个序列中插入2,排序后的序列是{2,4}
第二步:向序列{2,4}插入元素5,排序后的序列是{2,4,5}
第三步:向序列{2,4,5}插入元素7,排序后的的序列是{2,4,5,7}
第四步:向序列{2,4,5,7}插入元素9,排序后的序列是{2,4,5,7,9}
第五步:向序列{2,4,5,7,9}插入元素1,排序后的序列是{1,2,4,5,7,9}
第六步:向序列{1,2,4,5,7,9}插入元素6,排序后的序列是{1,2,4,5,6,7,9}
从上面的过程我们可以看出,针对7个元素的序列,需要进行6轮排序,外层循环次数下标从1到a.lenth-1;最好的情况是每轮排序只需要移动一个元素,最坏的情况是每轮都要移动新插入的元素到已有有序的头部。