在void A_shaped()
中是循环错误。
我认为这是变量Tab.Length
的问题,但我不明白为什么。
有人可以向我解释一下吗?
当程序启动循环时只填充零...我可以替换此变量吗?下面我在标签A_shaped
中的Coctail排序上发送代码。代码被截断。
抱歉,这是我的第一篇文章和我的第一个程序之一。
static void A_shaped(int[] Tab)
{
int j = 0;
for (int i = 0; i < Tab.Length ; i += 2)
{
Tab[j] = i;
j++;
}
for (int i = Tab.Length; i > 0; i -= 2)
{
Tab[j] = i;
j++;
}
}
static void Main(string[] args)
{
int[] Tab = new int[8] { 25000, 50000, 75000, 100000, 125000, 150000, 175000, 200000 };
for (int i = 0; i < 8; i++)
{
int[] a_shaped = new int[Tab[i]];
CocktailSort(a_shaped);
foreach (int a in a_shaped)
Console.WriteLine(a);
}
答案 0 :(得分:0)
有点难以理解你的逻辑。老实说,我不确定你想要做什么,但我认为你基本上都错了。
让我们以main()
为例:
首先,您要创建一个int
数组,名为Tab
并包含高度值。没问题。
int[] Tab = new int[8] { 25000, 50000, 75000, 100000, 125000, 150000, 175000, 200000 };
现在让我们谈谈你的for (int i = 0; i < 8; i++)
循环。以下是i
等于0时第一次在循环中的内容:
首先,执行此操作:int[] a_shaped = new int[Tab[i]];
您正在创建另一个名为int
的{{1}}数组,其大小为a_shaped
,位于索引处{在int
中{1}}。所以基本上,你要创建一个大小为25000的数组。
然后,您尝试对此数组i
进行排序,并传递给Tab
函数。但是你从来没有初始化它,所以你的a_shaped
数组包含25000个等于零的整数。
然后,最后,您使用以下行打印CocktailSort
的内容:
a_shaped
这将打印a_shaped
中包含的25000个整数,它们都等于零。这让你觉得它是一个无限循环或一个bug,但事实并非如此。正如您所问,它只是打印foreach (int a in a_shaped)
Console.WriteLine(a);
中包含的所有0。
结论:
无论你认为自己在做什么,都不是。您正在显示一个函数a_shape
,但您从未调用它。您只需创建一个变量,其调用方式与a_shape
几乎相同。你也忘记了它的初始化,并给它一个你可能不想要它的大小。然后,通过打印这些填充为0的巨大数组,您认为您面临无限循环,但您只是打印了大量的零。
没有冒犯,但我建议你先练习简单的程序来学习语言,然后再回过头来。