根据c#中的元素大小对数组进行排序并返回数组索引

H.K*_*H.K 1 c# asp.net-mvc-3

我需要从最小值到最大值对数组进行排序,但是我需要在排序后仅返回数组的索引.我不想交换值,我只需要根据值大小返回值索引,例如

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

现在我想将值的索引从最小值返回到最大值 为4,2,3,5,0,1.

Hab*_*bib 6

你在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();
Run Code Online (Sandbox Code Playgroud)

输出:

foreach(int item in sortedIndexArray)
    Console.WriteLine(item);
Run Code Online (Sandbox Code Playgroud)

输出:

4
2
3
5
0
1
Run Code Online (Sandbox Code Playgroud)