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

我需要将数组从最小值排序到最大值,但我需要在排序后只返回数组的索引。 我不想交换值,我只需要根据值大小返回值索引,例如

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。

你在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 
 var indexes = arr.Select((i, inx) => new { i, inx }) .OrderBy(x => xi) .Select(x => x.inx) .ToArray();