排序插入排序

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)  用于记录需要插入的数据
  • 稳定性:稳定

以上是关于排序插入排序的主要内容,如果未能解决你的问题,请参考以下文章

插入排序(直接插入排序折半插入排序希尔排序的算法思想及代码实现)

直接插入排序 ,折半插入排序 ,简单选择排序, 希尔排序 ,冒泡排序 ,快速排序 ,堆排序 ,归并排序的图示以及代码,十分清楚

Java插入排序实现代码

排序算法学习(直接插入排序,希尔排序,选择排序,堆排序,冒泡排序)

排序算法之冒泡选择插入排序(Java)

排序算法之冒泡选择插入排序(Java)