• [练手5]希尔排序


    目      标      用C#实现希尔排序

    思      想    

                     希尔排序(Shell Sort)又称为“缩小增量排序”。是1959年由D.L.Shell提出来的。该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。因为直接插入排序在元素基本有序的情况下(接近最好情况),效率是很高的,因此希尔排序在时间效率上比前两种方法有较大提高。
    具体做法:首先确定一组增量d0,d1,d2,d3,...,dt-1()其中n>d0>d1>...>dt-1=1),对于i =0,1,2,...,t-1,依次进行下面的各趟处理:根据当前增量di将n个元素分成di个组,每组中元素的下标相隔为di;再对各组中元素进行直接插入排序

    实现
            public void Sort(int[] intArray)
            {
                int k;
                int j;
                int intTemp;

                //计算步长
                for ( k = 1; k <= intArray.Length/3; k = k * 3 + 1) ;

                //循环比较
                while (k > 0)
                {
                    //插入排序
                    for (int i = k + 1; i <= intArray.Length; i = i + k)
                    {
                        intTemp = intArray[i - 1];
                        j = i;
                        while (j > k && intArray[j - k - 1] > intTemp)
                        {
                            intArray[j - 1] = intArray[j - k - 1];
                            j = j - k;
                        }
                        intArray[j - 1] = intTemp;
                    }

                    //减少步长
                    k = (k - 1) / 3;
                }
            }

    代码下载  希尔排序代码

  • 相关阅读:
    Linux下安装firefox最新版
    php开发网站编码统一问题
    WordPress前台后台页面打开慢的解决方法
    超链接标签简单的几个样式属性
    jQuery结合Ajax实现简单的前端验证和服务端查询
    Javascript配合jQuery实现流畅的前端验证
    Code-Validator:验证只包含英文字母
    Code-Validator:验证小数
    Code-Validator:验证正整数
    Code-Validator:验证非负整数
  • 原文地址:https://www.cnblogs.com/eugenewu0808/p/DO5.html
Copyright © 2020-2023  润新知