我想创建一个带有顺序序列(整数属性)的双向链表,这样按顺序顺序进行排序可以创建一个实际上等价于链接列表的数组。对链表进行简单排序
given: a <-> b <-> c
a.index > b.index
b.index > c.index
该索引将需要有效地处理任意数量的插入。
有没有一种已知的算法来完成这个? 问题是当列表变大并且索引序列已经打包时。在这种情况下,必须对列表进行扫描以恢复松弛。 我只是不确定应如何完成此操作。理想情况下,会有某种自动平衡,因此这种借贷既快又少。
将所有左侧或右侧indecies更改为1以腾出空间插入的天真解决方案是O(n)。
我更喜欢使用整数,因为我知道数字在浮点上往往不太可靠,因为在大多数实现中它们接近零。
为什么哦为什么dlinked列表?为什么不[平衡树](https://en.wikipedia.org/wiki/https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree#Implementations)? O(log(N))操作在增长/减少时没有问题。 –
“将所有左侧或右侧indecies改为1以腾出空间插入的天真解决方案是O(n)。”如果你真的坚持一个“分页*分页解决方案”(无论出于何种原因),而不是分散所有页面的松散,你可以简单地分割你想插入的页面,但是页面达到了它的填充因子。 –
如何将新项目插入到双向链表中?它们是插在头部还是尾部?或者在中间的任意位置?请注意,将项插入到双向链表的中间需要O(n),除非您维护指向单个项的指针,在这种情况下,维护这些额外的指针将需要时间。 – wookie919