-1

我在班级团队中有一个可变的“分数”。现在我需要一个按分数排序的团队列表和前 5 个团队的 viewbag。

谁能帮助我?

4

2 回答 2

2

假设您有一组团队:

ViewBag.TopFive = teams.OrderByDescending(x => x.Score).Take(5);
于 2013-05-27T14:03:19.317 回答
1

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

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

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

于 2013-05-27T14:07:27.280 回答