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 }