1       public static void insertSort(int arr[]) {
 2   
 3           for (int j = 1; j < arr.length; j++) {
 4               int i = j - 1;
 5               int x = j;
 6               // 算法导论上是i > 0,这是因为算法导论下标是从1开始算的
 7               while (i >= 0 && arr[i] > arr[j]) {
 8                   arr[i + 1] = arr[i];
 9                   i--;
10              }
11              
12              arr[i + 1] = x;
13          }
14  
15      }

 另一种风格的插入排序:

 1     public static void insertSort(int arr[]){
 2         
 3         for (int j = 1; j < arr.length; j++) {
 4             int i = j;            
 5             while(i > 0 && arr[i - 1] > arr[i]){
 6                 swap(arr,i - 1, i);
 7                 i--;
 8             }
 9         }
10         
11     }
12     
13     public static void swap(int arr[], int low, int high){
14         int temp = arr[low];
15         arr[low] = arr[high];
16         arr[high] = temp;
17     }

 

posted on 2018-04-22 13:51  佩恩长门  阅读(151)  评论(0)    收藏  举报