根据元件阵列的排序的数组,并返回指数在c#尺寸(Sort an array and return i

2019-09-01 20:33发布

我需要从最小到最大价值排序的数组,但我需要整理之后只返回数组的索引。 我不想交换价值,我只需要根据价值大小返回值指标,对于如

int[] arr = {7,8,2,3,1,5};
for (int i=0; i<=arr.length; i++)
{
   int index = Array.IndexOf(arr, i);
}

现在,我想从最小的返回值的指数作为最大 4,2,3,5,0,1。

Answer 1:

您在for循环检查错了,它应该是i < arr.Length 。 对于指数,你可以这样做:

int[] arr = { 7, 8, 2, 3, 1, 5 };
int[] sortedIndexArray = arr.Select((r, i) => new { Value = r, Index = i })
                            .OrderBy(t => t.Value)
                            .Select(p => p.Index)
                            .ToArray();

对于输出:

foreach(int item in sortedIndexArray)
    Console.WriteLine(item);

输出:

4
2
3
5
0
1


Answer 2:

var indexes = arr.Select((i, inx) => new { i, inx })
                  .OrderBy(x => x.i)
                  .Select(x => x.inx)
                  .ToArray();


文章来源: Sort an array and return index of arrays according to elements size in c#