八大基本排序--希尔排序

希尔排序需要选择一个增量序列,通常选为数组长度/2

 

 代码如下:

import java.util.Arrays;

public class ShellSort {

    public static void main(String[] args) {
        int[] arr = { 4, 7, 5, 3, 1, 9, 7, 0 };
        System.out.println(Arrays.toString(arr));
        int[]res = new int[arr.length];
        res = ShellSort.shellSort(arr);
        System.out.println(Arrays.toString(res));
    }

    public static int[] shellSort(int[] arr) {
        // 设置初始步长
        int buChang = arr.length / 2;
        // 遍历所有步长
        for (int d =buChang; d >0; d=d/2) {
            //遍历所有的元素(从d往后的所有元素)
            for (int i = d; i < arr.length; i++) {
                //遍历本组中的所有的元素
                for(int j = i-d;j>=0; j=j-d) {
                    if (arr[j]>arr[j+d]) {
                        int temp=arr[j];
                        arr[j] = arr[j+d];
                        arr[j+d] = temp;
                    }
                }
            }
        }
        return arr;
    }

}

输出

[4, 7, 5, 3, 1, 9, 7, 0]
[0, 1, 3, 4, 5, 7, 7, 9]
原文地址:https://www.cnblogs.com/yuange678/p/10634420.html