码迷,mamicode.com
首页 > 编程语言 > 详细

数据结构和算法基础之希尔排序

时间:2019-03-16 23:25:38      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:距离   算法   span   数据结构   ati   整数   组元   col   shel   

        /// <summary>
        /// 希尔排序
        /// 属于插入类排序,是将整个无序列分割成若干小的子序列分别进行插入排序
        /// 排序过程:先取一个正整数d1<n,
        /// 把所有序号相隔d1的数组元素放一组,组内进行直接插入排序;
        /// 然后取d2<d1,
        /// 重复上述分组和排序操作;直至di=1,即所有记录放进一个组中排序为止
        /// </summary>
        /// <param name="arry"></param>
        public static void ShellSort(int[] arry)
        {
            int gap = arry.Length / 2;
           while(gap>=1)
            {
                //把距离为gap编成一组在对这个组进行插入排序
                for (int i = gap; i < arry.Length-1; i++)
                {
                    int tmp = arry[i];
                    int j = 0;
                    //取出距离为gap的数
                    for (j = i-gap; j >=0&&tmp<arry[j]; j=j-gap)
                    {
                        arry[j + gap] = arry[j];
                    }
                    arry[j + gap] = tmp;
                }
                gap = gap / 2;
            }
        }

时间复杂度:n^1.3

数据结构和算法基础之希尔排序

标签:距离   算法   span   数据结构   ati   整数   组元   col   shel   

原文地址:https://www.cnblogs.com/weiqiangwaideshijie/p/10544800.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!