在 Go 中,container/heap
包可以用作 PriorityQueue -- https://pkg.go.dev/container/heap#example-package-PriorityQueue
是否有用于多级优先级队列的 Go 包?如果没有,如何自己写一个?
通过“多级优先级队列”,我的意思是:
任务1:遍历学生的所有分数,得到分数最高的前N名学生。这是典型的 PriorityQueue。
任务2:遍历不同课程学生的所有分数,得到前N门课程的前N高分(假设课程数大于N)。这就是我所说的“多级优先级队列” 。
样本结果可以是
course A: 99 98 98 course B: 92 90 88 course C: 91 89 87
笔记,
course D:
前 3 名的最高分90 89 88
不在前 3 名的课程中。
可能存在没有足够的学生分数来填写所有前 N 个最高分的情况。例如:
course E: 85 82 course F: 83 course G: 82 80 78
进一步的要求,在现实中,
数据来自解析一个超复杂超大的 XML 文件,因此我需要一次性遍历XML 文件,这就是我需要优先级队列的原因。
XML 文件实际上是 SQL Server Trace 文件,其中包含数百甚至数千条 SQL 命令(SQL 命令是课程,它们的持续时间是课程标记),这是我需要优先级队列的第二个原因 - 仅跟踪顶级的。
撒科打诨
相关分类