【发布时间】:2019-10-27 22:23:59
【问题描述】:
使用输入数组按绝对值对数组进行排序无法正常工作,但用简单数组替换它是可行的。我不知道为什么它不起作用,我只是看不出有什么问题。
我需要这样的结果:
输入:-5 4 8 -2 1
输出:1 -2 4 -5 8
static void Main()
{
var sampleInput = Console.ReadLine().Split().Select(int.Parse).ToArray();
int[] x = sampleInput;
int n = sampleInput.Length;
int[] output = new int[n];
string sOutput = string.Empty;
int start = 0;
int last = n - 1;
while (last >= start)
{
n--;
if (Math.Abs(x[start]) > Math.Abs(x[last]))
{
output[n] = x[start++];
}
else
{
output[n] = x[last--];
}
sOutput = output[n].ToString() + " " + sOutput;
}
Console.Write(sOutput);
}
【问题讨论】:
-
对于那些协助的人,请注意 OP 可能使用此代码 -c-sharpcorner.com/code/1537/… 。
-
在代码中编写排序算法通常更麻烦,而不值得。这是一个高等数学问题,而不是真正的编程问题。现有的、经过过度测试的代码是由了解底层数学所有细节的人编写的。除了了解它们的工作原理之外,您还应该将其视为黑匣子。我只想给 Array.Sort() 一个自定义比较器。或者使用 zaitsman 提供的 LINQ 方法,因为它更短且仍然清晰易懂。
-
“我不确定我到底需要什么,这是问题的核心。”回答我们和您自己这些问题: 1. 您想要排序什么? 2.你想怎么排序? 3. 为什么要这样排序? |特别是如果您对类实例进行分类,通常有十几种方法可以给特定的猫科动物蒙皮——而且每种方法都可能在某个时候有效。您使用的 GUI 技术也会发挥作用。