已有57人关注
关于希尔排序法不太懂啊
发表在C#图书答疑 2010-10-16
是否精华
版块置顶:
[font size=4][font size=6][font size=3][font size=1][font size=4]class Program
    {
        #region 希尔排序算法的实现
        /// <summary>
        /// 希尔排序算法的实现
        /// </summary>
        /// <param name="arr">要排序的一维数组</param>
        public static void Sort(int[] arr)
        {
            int inc;
[/font][/font]         [strong]  [font color=#00FF00][font size=6] for (inc = 1; inc <= arr.Length / 9; inc = 3 * inc + 1)                                      这地方我不太懂啊 元素就6个/9不是小于1吗  具体给解释一下呗!谢谢了
[/font] [/font]  [/strong]         for (; inc > 0; inc /= 3)
            {
                for (int i = inc + 1; i <= arr.Length; i += inc)
                {
                    int t = arr[i - 1];//记录当前值
                    int j = i;//定义下一个索引
                    while ((j > inc) && (arr[j - inc - 1] > t))
                    {
                        arr[j - 1] = arr[j - inc - 1];//交换数据
                        j -= inc;
                    }
                    arr[j - 1] = t;//将下一个元素值设置为当前值
                }
            }
        }
        #endregion

        static void Main(string[] args)
        {
            int[] arr = new int[] { 368, 98, 698, 2998, 38, 5998 };//定义一个一维数组,并赋值
            Console.Write("初始数组:");
            foreach (int n in arr)//循环遍历定义的一维数组,并输出其中的元素
                Console.Write("{0}", n + " ");
            Console.WriteLine();
            Program.Sort(arr);//调用自定义方法对数组进行排序
            Console.Write("排序后的数组:");
            foreach (int m in arr)
                Console.Write("{0} ", m);//输出排序后的数组元素
            Console.ReadLine();
        }
[/font][/font][/font]
分享到:
精彩评论 1
东方_mrkj
学分:0 LV1
2010-10-18
沙发
读者你好:
     关于6/9小于1的问题,原因是这样,当inc <= 6/9时,程序可以执行下面的for循环
     for(inc=1;inc<=list.Length/9;inc=3*inc+1);
     而inc的初始值为0(整数类型的默认值),所以至少保证inc等于0时,可以运行这个for循环,而随着inc=3*inc+1表达式的运算,inc的值在不断的增大,这样inc的值就存在大于6/9的情况,这样for循环回终止。
首页上一页 1 下一页尾页 1 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照