Optimization 用于特定文本编辑器的数据结构
某些文本编辑器需要执行以下操作: 插入一个字符 删除一个字符 链表示例:Optimization 用于特定文本编辑器的数据结构,optimization,data-structures,Optimization,Data Structures,某些文本编辑器需要执行以下操作: 插入一个字符 删除一个字符 链表示例: Insert(3,"x"): before: [a]-[b]-[c]-[d]-... after: [a]-[b]-[x]-[c]-[d]-... Delete(3): before: [a]-[b]-[x]-[c]-[d]-... after: [a]-[b]-[c]-[d]-... 实现这种行为的最佳数据结构是什么?我的直觉是:红黑树如果你说的“最优”是指最小的大O型边界,那
Insert(3,"x"):
before: [a]-[b]-[c]-[d]-...
after: [a]-[b]-[x]-[c]-[d]-...
Delete(3):
before: [a]-[b]-[x]-[c]-[d]-...
after: [a]-[b]-[c]-[d]-...
实现这种行为的最佳数据结构是什么?我的直觉是:红黑树如果你说的“最优”是指最小的大O型边界,那么任何树结构都比LinkedList好,在vs.Ologn上。这包括搜索字符并将其删除。如果编写程序所需的时间是一个很大的因素,那么假设您从头开始编写这些数据结构,LinkedList将是最佳解决方案。是的,我指的是最佳算法复杂性,即最坏情况下的最小大O界限。请注意,删除和插入操作是根据距数据开头的偏移量完成的,而不是通过搜索字符。因此,数据结构必须跟踪每个字符的位置,并允许使用有效的算法来查找第k个元素。链表只是一个示例来说明其功能,我希望使用其他数据结构可以更快地实现这一点。