算法原理
工作原理:
设有一组关键字{K1, K2,…, Kn}.排序开始就认为 K1 是一个有序序列,让 K2 插入上述表长为 1 的有序序列,使之成为一个表长为 2 的有序序列;然后让 K3 插入上述表长为 2 的有序序列,使之成为一个表长为 3 的有序序列;依次类推,最后让 Kn 插入上述表长为 n-1 的有序序列,得一个表长为 n 的有序序列。
具体算法描述如下:
- 从第一个元素开始,该元素可以认为已经被排序取出下一个元素
- 在已经排序的元素序列中从后向前扫描
- 如果该元素(已排序)大于新元素,将该元素移到下一位置
- 重复步骤 3,直到找到已排序的元素小于或者等于新元素的位置
- 将新元素插入到该位置后
- 重复步骤 2~5
也可以使用二分查找法来减少比较操作的次数。
示例
Java语言实现
public static void main(String[] args) {
int[] array={7,6,8,1,5};
int temp;
for(int i=1;i<array.length;i++)
{
temp=array[i];
for(int j=i;j>0;j--)
{
if(array[j-1]>temp){
array[j]=array[j-1];
array[j-1]=temp;
}
else{
array[j]=temp;
break;
}
}
}
for(int a=0;a<array.length;a++)
{
System.out.print(array[a]);
}
}