我正在尝试使用乱序插入来实现排队系统。密钥将对应于成员离开队列的时间。因此,通过找到最小的密钥,可以找到离开队列的下一个成员。
如果是c ++,则可以通过地图来解决。 MATLAB提供了一个名为map的结构,但是它是一个hashmap。它支持O(1)插入和删除,但是要找到最小的密钥,则必须遍历所有密钥(O(N))。另一种方法是将向量用作队列。最小密钥始终位于最前面,因此访问权限为O(1)。但是在这种情况下,插入到队列的中间会使所有比插入键高的内容都移位一(O(N))。
所以问题是:
- 有没有一种方法可以在MATLAB中实现与std :: map类似的行为?
- 是否有其他数据结构可以为这些操作提供O(log(N))性能?
更多&回答...