关于排名算法的随想
问题:有N个玩家的分数,要对前K个最高分玩家进行排名。
用一个最大堆排序就能解决。根据算法导论:
MaxHeapify(heap, i)中heap[i]的左右节点都是最大堆,函数作用是对下标为i的节点进行堆形态的维护。时间复杂度为O(lgn)
BuildMaxHeap(heap)中是对一个无序数组进行最大堆化。时间复杂度为O(n)
HeapSort(heap, k)定义为对数组进行堆排序,找出最大的K个数。
所以,第一次找出K个最高分玩家,时间复杂度为O(klgn)。
更新策略:
1.如果变化的是K名之外,
原创
2021-03-06 00:50:32 ·
136 阅读 ·
0 评论