我正在尝试以高效的复杂性实施员工队列。
当我将雇员插入队列时,我提供其ID号和分数。 我想保持一个按员工分数升序排列的队列。
到目前为止,可以使用二进制堆实现的优先级队列解决问题,但是我需要能够从队列中删除员工,并通过其ID号更新员工。 据我所知,二进制堆不支持删除或更新元素的有效方法。
更新-O(n)用于搜索元素+ O(1)用于对其进行更新。
删除-O(n)用于搜索元素+ O(nlg(n))用于重建堆。
有没有更适合该问题的数据结构?
我正在尝试以高效的复杂性实施员工队列。
当我将雇员插入队列时,我提供其ID号和分数。 我想保持一个按员工分数升序排列的队列。
到目前为止,可以使用二进制堆实现的优先级队列解决问题,但是我需要能够从队列中删除员工,并通过其ID号更新员工。 据我所知,二进制堆不支持删除或更新元素的有效方法。
更新-O(n)用于搜索元素+ O(1)用于对其进行更新。
删除-O(n)用于搜索元素+ O(nlg(n))用于重建堆。
有没有更适合该问题的数据结构?