public static void shellSort(int arr []) { int gap = arr.length/2; //gap 为增量 while(gap >= 1){ shellInsertSort(arr,gap); gap = gap/2; } System.out.println(Arrays.toString(arr)); } private static void shellInsertSort(int[] arr, int gap) { //类似插入排序,只是插入排序的增量是1,这里的增量是gap for(int i = gap;i<arr.length;i++){ if(arr[i] < arr[i-gap]){ int j; int x = arr[i]; //x为待插入的元素 arr[i] = arr[i-gap]; for (j = i-gap;j>=0&&x<arr[j];j=j-gap){ arr[j+gap] = arr[j]; //通过循环,逐个后移一位找到要插入的位置 } arr[j+gap] = x; //插入 } } }
面试 手写排序算法之希尔排序
最新推荐文章于 2022-02-01 13:32:44 发布