【发布时间】:2013-01-06 04:29:46
【问题描述】:
我正在用 C# 编写代码来对数组进行排序,我想要右侧的所有负值和左侧的所有正值,不应该按降序排列
namespace SortApp
{
class Program
{
static void Main(string[] args)
{
int[] newInt = new int[] { 5, -2, -1, -4, -20, 6, 7, -14, 15, -16, 8, 9, 10 };
int size = 12, i= 0; // or newInt.Length
for (i = 0; i < newInt.Length; i++)
{
if (newInt[i] < 0 && newInt[size] > 0)
{
int temp = newInt[i];
newInt[i] = newInt[size];
newInt[size] = temp;
size--;
}
}
for (i = 0; i < newInt.Length; i++)
{
Console.Write(newInt[i]);
Console.Write(" ");
}
}
}
}
但输出是这样的(-20 在错误的一边):
5 10 9 8 -20 6 7 -14 15 -16 -4 -1 -2
但预期的输出是:
5 10 9 8 15 6 7 -14 -20 -16 -4 -1 -2
为什么我的代码没有产生预期的输出?
【问题讨论】:
-
@pst 我不同意,他们在询问他们的具体解决方案,这不是一个完整的排序,而只是“在右侧有负面影响”。搜索排序算法并不能解决他们的问题。
-
预期输出为:5 10 9 8 15 6 7 -14 -20 -16 -4 -1 -2,不便之处敬请见谅
-
在您预期的输出情况下,排序也不稳定(15 出现在 6 之前),因此,虽然理解算法不正确的原因很重要,但类似这样的东西在 LINQ 中可以工作:@987654324 @