我有选择正确的数据结构/ s的问题,这些都是要求:在集合中查找元素的索引,要使用哪个集合?
- 我必须能够插入和删除元素
- 我还必须能够获得元素的索引集合(集合中的顺序)
- 元素具有唯一的标识号
- 我可以排序(如果需要)使用任何绕圈
排序并不元素真的是必须的,重要的是获得元素的索引,不管内部如何实现,但无论如何,我认为最好的方法是排序。 元素的索引是集合内部的顺序。所以必须使用某种顺序。当我删除一个元素时,从其他元素到最后改变它们的顺序/索引。
第一种方法是使用链表,但我不想O(n)。 我也想过使用和排序的字典,这会给O(log n)查找/插入/删除,不是吗? 有没有更好的方法?我知道TRIE会为O(1)提供常用操作,但我不知道如何获取元素的索引,我不得不遍历这个trie并给出O(n),我错了吗?
谢谢,我刚刚搜索订单统计树。正如你所说,他们有一个方法返回元素的“排名”,这正是我需要的。另外,扩展一个行为似乎是一个订单统计树是非常有趣的。 –