已有57人关注
(希尔算法)十万火急!!
发表在C#图书答疑 2011-05-10
是否精华
版块置顶:
[font size=][font size=1][font size=2][font size=3] 
 
 
[font size=4] 
 您好,我看了《c#编程宝典》,对讲希尔排序算法(110页)的例5.6实在看不懂,打了问号的地方都是我不懂的地方!拜托给讲的细一点,因为我是自学,谢谢

 

public static void Sort(int[]arr)

{

    int inc;

    for (inc=1;inc<=arr.Length/9;inc=3*inc+1);//这是啥意思?

    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;//?

        }

    }

}

static void Main(string[]args)

{

     int []arr=new int[]{21,4,26,18,32,54,47,915,48};

     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][/font][/font]
分享到:
精彩评论 1
东方_mrkj
学分:0 LV1
2011-05-10
沙发
读者你好:
关于你的问题 ,请参下面的注释:



   int inc;
   for (inc = 1; inc <= list.Length / 9; inc = 3 * inc + 1) ;   //寻找最佳增量,这里9和3是可以变动的
   Console.WriteLine(inc);    //输出这个增量值,也可以不要,这里只是验证inc的值
   for (; inc > 0; inc /= 3)     //增量的间距为3的倍数,直到inc为1是最后一轮
   {   
       。。。。。。。。。。。。。//其他内容
    }
  
首页上一页 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经营性网站备案信息 营业执照