1. //希尔排序 --> 移位法
    2. public static void shellSort2(int[] arr) {
    3. int temp;
    4. int j;
    5. //增量:gap,并逐步缩小增量
    6. for (int gap = arr.length / 2; gap > 0; gap /= 2) {
    7. //从此gap个元素,逐个对其所在的组进行直接插入排序
    8. for (int i = gap; i < arr.length; i++) {
    9. j = i;
    10. temp = arr[j];
    11. if (arr[j] < arr[j - gap]){
    12. while (j - gap >= 0 && temp < arr[j - gap]){
    13. arr[j] = arr[j - gap];
    14. j -= gap;
    15. }
    16. //当退出while后,说明给temp找到插入的位置了
    17. arr[j] = temp;
    18. }
    19. }
    20. }
    21. // System.out.println("排序后:");
    22. // System.out.println(Arrays.toString(arr));
    23. }