enqueueScore 将分数加入优先队列
(queue *priorityqueue.PriorityQueue[Score], element Score)
| 231 | |
| 232 | // enqueueScore 将分数加入优先队列 |
| 233 | func (rs *rankingService) enqueueScore(queue *priorityqueue.PriorityQueue[Score], element Score) { |
| 234 | if queue == nil { |
| 235 | return |
| 236 | } |
| 237 | |
| 238 | // 尝试直接入队 |
| 239 | if err := queue.Enqueue(element); err == nil { |
| 240 | return |
| 241 | } |
| 242 | |
| 243 | // 队列已满,需要与最小元素比较 |
| 244 | minElement, err := queue.Dequeue() |
| 245 | if err != nil { |
| 246 | rs.l.Error("出队列失败", zap.Error(err)) |
| 247 | return |
| 248 | } |
| 249 | |
| 250 | // 选择较大的元素重新入队 |
| 251 | toEnqueue := element |
| 252 | if minElement.value > element.value { |
| 253 | toEnqueue = minElement |
| 254 | } |
| 255 | |
| 256 | if err := queue.Enqueue(toEnqueue); err != nil { |
| 257 | rs.l.Error("入队列失败", zap.Error(err)) |
| 258 | } |
| 259 | } |
| 260 | |
| 261 | // buildResults 构建结果列表 |
| 262 | func (rs *rankingService) buildResults(queue *priorityqueue.PriorityQueue[Score]) []domain.Post { |
no test coverage detected