我的数据如下:5 2 2 1 3 3 4我想在 C# 中输出如下:1 2 3 4 5 2 3所以基本上所有的唯一值首先按 ASC 顺序排序,而不是从剩余的项目开始......
2 回答
MMTTMM
TA贡献1869条经验 获得超4个赞
您可以按值对数据进行分组,对组进行排序,然后在记住计数的情况下迭代组 - 每次递减并在达到零时删除事物,或者增加计数器并仅输出至少人口众多的事物。就像是:
var values = new[] { 5, 2, 2, 1, 3, 3, 4 };
var data = new SortedDictionary<int, int>();
foreach(var val in values)
{
int count;
if (!data.TryGetValue(val, out count)) count = 0;
data[val] = count + 1;
}
int lim = 0;
bool any;
do
{
any = false;
foreach (var pair in data)
if (pair.Value > lim)
{
Console.WriteLine(pair.Key);
any = true;
}
lim++;
} while (any);
- 2 回答
- 0 关注
- 181 浏览
添加回答
举报
0/150
提交
取消