我在班级团队中有一个变量“得分”。现在我需要一个按分数排序的球队名单和前5支球队的观察包。
任何可以帮助我的人?
答案 0 :(得分:2)
假设你有一组球队:
ViewBag.TopFive = teams.OrderByDescending(x => x.Score).Take(5);
答案 1 :(得分:1)
这可能是一项学习任务,所以我不会写任何代码。
由于您正在寻找前五项,因此对列表进行排序可能会过于昂贵,尤其是当列表很长时。相反,您可以遍历列表,并选择前五个元素。
使用原始列表的前五个元素对五元素“顶部列表”进行种子设定,然后对顶部列表进行排序。由于其大小是固定的,因此对其五个元素进行排序为O(1)
。现在,遍历原始列表的剩余N-5
元素,将每个项目与已排序的“顶部列表”的最小元素进行比较。如果您看到的值大于前五个列表中的最小项,请使用当前项替换其中一个顶部项,并让最小项“脱落”到列表末尾。整个过程为O(N)
,这可能是对排序解决方案的重大改进,O(N*logN)
。