常用算法Java實現之直接插入排序


  直接插入排序是將未排序的數據插入至已排好序序列的合適位置。
  具體流程如下:
  1、首先比較數組的前兩個數據,並排序;
  2、比較第三個元素與前兩個排好序的數據,並將第三個元素放入適當的位置;
  3、比較第四個元素與前三個排好序的數據,並將第四個元素放入適當的位置;
   ......
  4、直至把最后一個元素放入適當的位置。
 
  假如有初始數據:25  11  45  26  12  78。
  1、首先比較25和11的大小,11小,位置互換,第一輪排序后,順序為:[11, 25, 45, 26, 12, 78]。
  2、對於第三個數據45,其大於11、25,所以位置不變,順序依舊為:[11, 25, 45, 26, 12, 78]。
  3、對於第四個數據26,其大於11、25,小於45,所以將其插入25和45之間,順序為:[11, 25, 26, 45, 12, 78]。
  .......
  4、最終順序為:[11, 12, 25, 26, 45, 78]。
 
  直接插入排序是穩定的。直接插入排序的平均時間復雜度為O(n2)。
 
  Java 代碼實現如下:( https://github.com/xbk417/algorithm
 1     public void sort(int[] arr) {
 2         int tmp;
 3         for(int i = 1; i < arr.length; i++) {
 4             // 待插入數據
 5             tmp = arr[i];
 6             int j;
 7             for(j = i - 1; j >= 0; j--) {
 8                 // 判斷是否大於tmp,大於則后移一位
 9                 if(arr[j] > tmp) {
10                     arr[j+1] = arr[j];
11                 }else{
12                     break;
13                 }
14             }
15             arr[j+1] = tmp;
16             System.out.println(i + ":" + Arrays.toString(arr));
17         }
18     }

 


免責聲明!

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



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