码迷,mamicode.com
首页 > 编程语言 > 详细

排序算法二:二分插入排序

时间:2015-03-09 15:39:41      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:

一.算法思想

  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 }            

 

排序算法二:二分插入排序

标签:

原文地址:http://www.cnblogs.com/beijixingzhiguang/p/4323579.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!