按双变量排序,先查看5个

本文关键字:5个 变量 排序 | 更新日期: 2023-09-27 18:15:46

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

谁能帮我?

按双变量排序,先查看5个

假设您有一个团队集合:

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

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

由于您正在查找前五个元素,因此对列表进行排序可能过于昂贵,特别是当列表非常长时。相反,你可以遍历列表,选择最前面的五个元素。

用原始列表的初始5个元素作为5元素"top list"的种子,然后对top list进行排序。由于它的大小是固定的,所以对它的5个元素排序为O(1)。现在遍历原始列表中剩余的N-5元素,将每个元素与排序后的"top list"中的最小元素进行比较。如果您看到的值大于前5个列表中最小的项,则用当前项替换前5个列表中的一个项,并让最小的项"从"列表末尾掉下来。这整个过程是O(N),这可能是一个显着改进的排序解决方案,O(N*logN)