我正在尝试编写一个像这样的数组的函数[4,7,2,1,9] 然后返回另一个像这样的数组
[4,1,0,2,3]// the sorted indices descending for the input array values
我已经尝试过这段代码,但是它运行不正常,我想帮我写一个像这样排序数组的函数,成本最低
public void solution(int[] D)
{
int[] sorted = new int[D.Length];
for (int i = 0; i < D.Length; i++)
{
int ind = 0;
for (int j = 0; j < D.Length; j++)
{
if (D[j] > D[i] ) //&&
{
ind = j;
}
}
sorted[i] = ind;
}
}
答案 0 :(得分:4)
Array.Sort
允许您传递第二个数组:
var data = new[] { 4, 7, 2, 1, 9 };
var indices = new[] { 0, 1, 2, 3, 4 };
Array.Sort( data, indices );
如果您需要按降序排列,请使用Array.Reverse
或将IComparer
传递给订单:
class ReverseSort : IComparer<int>
{
public int Compare( int x, int y )
{
return y.CompareTo( x );
}
}
Array.Sort( data, indices, new ReverseSort() );
不幸的是Array.Sort
没有一个很好的重载,它需要两个数组+一个像其他重载那样的委托。