首页上一页 1 下一页尾页 1 条记录 1/1页
(希尔算法)十万火急!!
发表在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]
[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]