数组排序,同时保留原索引

var arr = new[] { 5, 4, 2, 3, 1 };
var len = arr.Length;
var idx = new int[len];
for (int i = 0; i < len; i++)
{
idx[i] = i;
}

Array.Sort(idx, (m, n) =>
{
var diff = arr[m] - arr[n];
if (diff != 0) return diff;
return m - n;//如果一样大,索引小的在前面,保证稳定
});

posted @ 2023-12-02 10:33  热敷哥  阅读(8)  评论(0编辑  收藏  举报