排序插入排序
Posted 人生如逆旅,我亦是行人。
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排序插入排序相关的知识,希望对你有一定的参考价值。
参考文章:
算法描述:
对于给定的一个数组,初始时假设第一个记录自成一个有序序列,其余记录为无序序列。接着从第二个记录开始,按照记录的大小依次将当前处理的记录插入到其之前的有序序列中,直至最后一个记录插入到有序序列中为止
代码实现:
public void insertSort(int a[]){ int length=a.length; //数组长度 int j; //当前值的位置 int i; //指向j前的位置 int key; //当前要进行插入排序的值 //从数组的第二个位置开始遍历值 for(j=1;j<length;j++){ key=a[j]; i=j-1; //a[i]比当前值大时,a[i]后移一位,空出i的位置,好让下一次循环的值后移 while(i>=0 && a[i]>key){ a[i+1]=a[i]; //将a[i]值后移 i--; //i前移 }//跳出循环(找到要插入的中间位置或已遍历到0下标) a[i+1]=key; //将当前值插入 } }
算法分析:
- 时间复杂度:O(n2) 最好O(n) 最坏O(n2)
- 空间复杂度:O(1) 用于记录需要插入的数据
- 稳定性:稳定
以上是关于排序插入排序的主要内容,如果未能解决你的问题,请参考以下文章
插入排序(直接插入排序折半插入排序希尔排序的算法思想及代码实现)
直接插入排序 ,折半插入排序 ,简单选择排序, 希尔排序 ,冒泡排序 ,快速排序 ,堆排序 ,归并排序的图示以及代码,十分清楚