在 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 命令是課程,它們的持續時間是課程標記),這是我需要優先級隊列的第二個原因 - 僅跟蹤頂級的。
去多級優先隊列
慕碼人8056858
2022-10-24 15:23:20