zoukankan      html  css  js  c++  java
  • 排序(六)插入排序

    参考文章:

    算法描述:

    对于给定的一个数组,初始时假设第一个记录自成一个有序序列,其余记录为无序序列。接着从第二个记录开始,按照记录的大小依次将当前处理的记录插入到其之前的有序序列中,直至最后一个记录插入到有序序列中为止

    代码实现:

        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)  用于记录需要插入的数据
    • 稳定性:稳定
  • 相关阅读:
    机器学习的数学基础
    Numpy + matplotlib + pandas 用法示例
    笔记:《ZeroMQ》
    Bash 常用快捷键
    Python网络爬虫
    Bash-Script 应用案例
    Bash-Script 语法详解
    ADB的使用
    ROS概述
    架构风格
  • 原文地址:https://www.cnblogs.com/amei0/p/8283463.html
Copyright © 2011-2022 走看看