我在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我不同意,他們都在問關於他們的具體的解決方案,這是不一個完整的排序,但只是'在右側有負面'。搜索排序算法並不能解決他們的問題。 – us2012
預期輸出爲: 5 10 9 8 15 6 7 -14 -20 -16 -4 -1 -2, 對於不便,我們深表歉意 – Justice
在您預期的輸出情況下,排序也不穩定(15出現在6 ),所以,儘管理解算法不正確的原因很重要,但是像這樣的東西可以在LINQ中工作:arr = arr.OrderBy(e => e> 0?0:1).ToArray()' – 2013-01-06 05:11:06