基于从最小值到最大值的麻烦数组对数组进行排序

时间:2018-02-27 15:42:30

标签: c# arrays sorting

我使用此代码对数组进行排序

Array.Sort(numsFoundedCount, numsFoundedSorted);

它的工作原理但当2个numsFoundedSorted项具有相同的numsFoundedCount值时,我希望它们(numsFoundedSorted项)从min到max排序。

int[] numsFoundedCount = new int[80];
int[] numsFoundedSorted = new int[80];

numsFoundedSorted 包含一个整数, numsFoundedCount 表示此整数出现的次数。所以我想根据numsFoundedCount将numsFoundedSorted从最小值排序到最大值。

我希望两个数组都像Array.Sort一样进行排序 例如:

numsFoundedSorted {5,7,6,8}
numsFoundedCount {3,2,2,1}

排序后必须:

numsFoundedSorted {8,6,7,5}
numsFoundedCount {1,2,2,3}

1 个答案:

答案 0 :(得分:2)

如果我理解正确,这就是你想要的

var numsFoundedSorted = numsFoundedSorted
    .Select((item, idx) => new { Index = idx, Value = item })
    .OrderBy(tuple => numsFoundedCount[tuple.Index])
    .ThenBy(tuple => tuple.Value)
    .Select(tuple => tuple.Value)
    .ToArray();

Array.Sort(numsFoundedCount);

使用Array.Sort

无法做到这一点

如果您已经在使用C#7功能,则可以将new { Index = idx, Value = item }替换为(Index: idx, Value: item)