您的位置:威尼斯官方网站 > 威尼斯正规官网 > 换到不相邻的因素以对数组的风姿洒脱部分进展

换到不相邻的因素以对数组的风姿洒脱部分进展

发布时间:2019-11-27 17:27编辑:威尼斯正规官网浏览(62)

    威尼斯官方网站,引用:对于普遍乱序数组插入排序异常的慢,因为它只会换换相邻的元素,由此成分只好一点一点的从数组的生机勃勃端移动到另后生可畏端。例如,固然主键最小的因素无独有偶在数组的底限,要将它挪到正确的岗位就必要N-1次活动。Hill排序为了加飞速度轻巧的更改了插入排序,沟通不相邻的因素以对数组的风姿罗曼蒂克对进展排序,并最后用插入排序将部分有序的数组排序。

                int[] sort = new int[13] { 1, 4, 89, 34, 56, 40, 59, 60, 39, 1, 40, 90, 48 };  // 输入一个数组
                int h = 1;
                int length = sort.Length;
                while (h > length / 3)
                {
                    h = 3 * h + 1;      // 1,4,13,40,121,364,1093,...
                }   // h的初始值根据数组元素多少而定
                while (h >= 1)  // 当h=1 时排序完成
                {
                    for (int i = h; i < length; i++)  // 将间隔为h的元素排序
                    {
                        for (int j = i; j >= h && sort[j] < sort[j - h]; j -= h) // 当满足这两个条件时交换 数值
                        {
                            int temp = sort[j];
                            sort[j] = sort[j - h];
                            sort[j - h] = temp;
                        }
                    }
                    h = h / 3;
                }
                for (int i = 0; i < sort.Length; i++)  // 输出
                   {
                        Console.Write(sort[i] + " ");
                   }
    

      备注:文字和代码有参考到图书:算法 第四版(人民邮电出版社) Hill排序 (162-163)

    本文由威尼斯官方网站发布于威尼斯正规官网,转载请注明出处:换到不相邻的因素以对数组的风姿洒脱部分进展

    关键词:

上一篇:没有了

下一篇:没有了