首页上一页 1 下一页尾页 1 条记录 1/1页
关于希尔排序法不太懂啊
发表在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]
{
#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]