绳索上有相当于范·埃姆德·博阿斯的树木吗?
我认识的某个人正在计划在不久的将来实现文本编辑器,这促使我思考一下哪种类型的数据结构对于文本编辑器来说是最快的。最常用的结构显然是绳索或间隙缓冲器。 Van Emde Boas树大约是最快的优先级队列,如果您不介意可放入其中的项目数上限和较大的初始化成本。我的问题是,是否存在某些数据结构与van Emde Boas树一样快,但是支持文本编辑器操作。 我们只需要在数据结构中支持最多字符(因此,如果,则我们最多支持4GB的ASCII字符)。我们有时间来初始化新的数据结构。我们希望支持以下操作:mmmlogm=32logm=32\log m = 32m−−√m\sqrt{m} 在中的位置处插入一个字符(从而将每个后续字符的位置增加1)。iiiO(loglogm)O(loglogm)O(\log \log m) 在位置删除一个字符在。iiiO(loglogm)O(loglogm)O(\log \log m) 在位置返回字符在。iiiO(loglogm)O(loglogm)O(\log \log m) 因此,insert(0,'a')后接insert(0,'b')会得出“ ba”。 更好的是: 返回一个“指针”一些索引在。iiiO(loglogm)O(loglogm)O(\log \log m) 给定一个“指针”,返回中此位置的字符。O(1)O(1)O(1) 给定一个“指针”,删除中此位置的字符。O(1)O(1)O(1) 给定“指针”,在此位置添加一个字符,然后将指针返回到以下位置。O(1)O(1)O(1) (可选)给定“指针”,将“指针”返回到的下一个/上一个字符。O(1)O(1)O(1)