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


一.算法思想

  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 }            

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM