美文网首页
常用排序算法之希尔排序

常用排序算法之希尔排序

作者: Andy周 | 来源:发表于2016-07-26 20:55 被阅读44次

    希尔排序算法

    /**
         * 希尔排序
         *
         * @param array
         * @return
         */
        public static int[] shellSort(int[] array) {
            double d1 = array.length;
            int temp = 0;
            while (true) {
                d1 = Math.ceil(d1 / 2);
                int d = (int) d1;
                for (int x = 0; x < d; x++) {
                    for (int i = x + d; i < array.length; i += d) {
                        int j = i - d;
                        temp = array[i];
                        for (; j >= 0 && temp < array[j]; j -= d) {
                            array[j + d] = array[j];
                        }
                        array[j + d] = temp;
                    }
                }
                if (d == 1) {
                    break;
                }
            }
            return array;
        }
    

    运行

    /**
         * 待排序的数组
         */
        private static int[] array = {
                12, 10, 5, 9, 5, 32, 16, 1, 9, 99, 80, 3, 18, 19, 20, 25, 7, 15
        };
    
        public static void main(String[] args) {
    
            int[] result = SortUtils.mergingSort(array.clone());
            System.out.println(Arrays.toString(result));
    
        }
    

    输出

    [1, 3, 5, 5, 7, 9, 9, 10, 12, 15, 16, 18, 19, 20, 25, 32, 80, 99]
    

    相关文章

      网友评论

          本文标题:常用排序算法之希尔排序

          本文链接:https://www.haomeiwen.com/subject/idtojttx.html