我在c#中有一个插入排序的工作实现,但是我需要按递减顺序存储这些值。我当前的实现以递增的顺序给出了数字。但我不确定如何扭转它。 A是我的阵列。
for (i = 1; i < A.Length; i++)
{
int value = A[i];
j = i - 1;
while ((j >= 0) && (A[j].CompareTo(value) > 0))
{
A[j + 1] = A[j];
j--;
}
A[j + 1] = value;
}
Console.WriteLine("\nSorted\n");
foreach (int x in A)
{
Console.WriteLine(x);
}
答案 0 :(得分:4)
改变这个:
while ((j >= 0) && (A[j].CompareTo(value) > 0))
用这个:
while ((j >= 0) && (A[j].CompareTo(value) < 0))
答案 1 :(得分:2)
您可以使用Linq对数组进行排序:
A.OrderBy(x => x);
或者按降序排序(反转):
A.OrderByDescending(x => x);
答案 2 :(得分:1)
您想要反转数组吗?使用Array.Reverse
:
Array.Reverse(A);
如果您想要按数字排序,可以使用LINQ:
A = A.OrderBy(i => i).ToArray();
A = A.OrderByDescending(i => i).ToArray();
如果已经订购了数组Array.Reverse
则更有效。
答案 3 :(得分:0)
要反转算法,只需反转比较
即可while ((j >= 0) && (A[j].CompareTo(value) > 0))
到这个
while ((j >= 0) && (A[j].CompareTo(value) < 0)) // note that it reads '< 0'
撤消您正在检查的条件。