zoukankan      html  css  js  c++  java
  • 排序算法二:二分插入排序

    一.算法思想

      1.二分插入排序的基本思想和插入排序一致;都是将某个元素插入到已经有序的序列的正确的位置;

      2.和直接插入排序的最大区别是,元素A[i]的位置的方法不一样;直接插入排序是从A[i-1]往前一个个比较,从而找到正确的位置;而二分插入排序,利用前i-1个元素已经是有序的特点结合二分查找的特点,找到正确的位置,从而将A[i]插入,并保持新的序列依旧有序;

      3.时间复杂度:

      T(n) = O(n);

    二.代码

      

     1 class BinaryInsertSort{
     2      public static void sort(int[] A)  {
     3          int len =A.length;
     4          int key = 0;
     5          int low = high = mid =0;
     6          for(int i =0 ;i<len;i++)  {
     7              key = A[i];
     8              low = 0;
     9              high = i-1;            
    10              while(low<=high){    
    11               mid = (high + low)/2;  
    12               if(key<A[mid]){
    13                    high = mid -1;
    14               }
    15               else{
    16                       low = mid+1;
    17                }
    18              }
    19            for(int j = i-1;j>=high+1;j--){
    20                   A[j+1] =A[j];
    21            }
    22            A[j+1] =key;
    23          }
    24    }
    25 }            
  • 相关阅读:
    js原型杂谈
    arguments.callee.caller
    $resource
    sql的四种匹配模式
    AMD规范
    module.ngdoc
    angularjs杂谈
    浏览器前缀
    css21规范学习
    <meta>标签
  • 原文地址:https://www.cnblogs.com/beijixingzhiguang/p/4323579.html
Copyright © 2011-2022 走看看