我需要从最小值到最大值对数组进行排序,但是我需要在排序后仅返回数组的索引.我不想交换值,我只需要根据值大小返回值索引,例如
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.
你在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)