选择阵列中最大投票的最快算法是什么?

时间:2016-10-17 19:15:07

标签: algorithm big-o

问题:

正在进行员工投票以选择下一位董事会成员:

  • 员工只能通过选择那些人来投票给一名被提名者 唯一员工编号(员工编号为整数> = 0)

  • 投票存储在数组

  • 获得最多选票的人将被选为下一个 董事会成员

选择董事会成员的最有效算法是什么?

子问题:如果我们知道候选人的人数少于选民人数,那会有更有效的算法吗?

可能的解决方案?

在这种情况下使用哈希表是否有意义,因为每个被提名者都有一个唯一的ID?

或者我们可以先对数组进行排序(假设数组未初始排序),然后通过遍历数组并跟踪最大计数器来跟踪获胜者:

投票[id] = [1,1,1,2,2,3,3,3,3,4]

所以只需遍历整个数组,并且对于voterID = 3

,maxCount = 4

因此,3是赢家?

1 个答案:

答案 0 :(得分:2)

经典空间与性能权衡。

哈希表通过数据(N)进行一次传递。 排序+计数需要(N logN + N)。