按双变量排序列表并首先查看5

时间:2013-05-27 14:01:38

标签: c# asp.net-mvc

我在班级团队中有一个变量“得分”。现在我需要一个按分数排序的球队名单和前5支球队的观察包。

任何可以帮助我的人?​​

2 个答案:

答案 0 :(得分:2)

假设你有一组球队:

ViewBag.TopFive = teams.OrderByDescending(x => x.Score).Take(5);

答案 1 :(得分:1)

这可能是一项学习任务,所以我不会写任何代码。

由于您正在寻找前五项,因此对列表进行排序可能会过于昂贵,尤其是当列表很长时。相反,您可以遍历列表,并选择前五个元素。

使用原始列表的前五个元素对五元素“顶部列表”进行种子设定,然后对顶部列表进行排序。由于其大小是固定的,因此对其五个元素进行排序为O(1)。现在,遍历原始列表的剩余N-5元素,将每个项目与已排序的“顶部列表”的最小元素进行比较。如果您看到的值大于前五个列表中的最小项,请使用当前项替换其中一个顶部项,并让最小项“脱落”到列表末尾。整个过程为O(N),这可能是对排序解决方案的重大改进,O(N*logN)