按双变量排序,先查看5个
本文关键字:5个 变量 排序 | 更新日期: 2023-09-27 18:15:46
我在班级团队中有一个可变的"分数"。现在我需要一个按分数排序的球队列表和前5支球队的viewbag。
谁能帮我?假设您有一个团队集合:
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)
。