【问题标题】:Javascript sorted listsJavascript 排序列表
【发布时间】:2011-07-10 06:18:01
【问题描述】:

Javascript 或 jQuery 中有排序列表吗?

我有一个庞大的列表,随着时间的推移几乎没有插入操作。 每次添加单个项目时,我都无法为整个列表调用 object.sort()。 我需要插入 o(log(n));

【问题讨论】:

  • 如果你说的是原生类型,那么不,JavaScript 没有这个特性,尽管你没有理由不能自己做这个。或者,查看this technique 以加速Array.sort(没有Object.sort 这样的东西)
  • 这是针对 node.js 的,但稍加调整可能是您的解决方案:github.com/shinout/SortedList

标签: javascript list sorting


【解决方案1】:

不,没有,您所拥有的只是Array#sort,您已经排除了重复使用的可能性(并且有充分的理由!)。您必须使用insertion sort 方法。

【讨论】:

  • 来自您的链接:在大型列表中效率要低得多
  • 但是,它也指出它“对于已经充分排序的数据集是有效的”。
  • @mplungjan:我的印象是数据集已经排序,因此 OP 正在寻找一种解决方案来避免在插入时进行完全重新排序。插入排序对于数据集的 initial 排序不是一个很好的答案,但如果插入相对较少(或涉及密钥的修改,您可以在其中删除并重新插入)。事实上,它们在这方面确实可以非常快。
  • 我正在寻找的是类似于 Java(TreeMap) 和 C++(std::map) 中提供的 AVL 或红黑树。这些数据结构即使在不断变化时也保持不断排序。 JavaScript 或 jQuery 中是否有类似的东西?
  • @eshalev: “我正在寻找的是类似于 AVL 或红黑树的东西......在 JavaScript 或 jQuery 中有类似的东西吗?” 没有在 JavaScript 本身中,不,没有排序。 (在任何体面的平台上实现对象都将使用有效的映射,它很可能是其中一种形式,用于属性查找。)可能有人已经构建了一个,但我不知道具体有什么。 (续)
【解决方案2】:

Found this: 还没用过,但看起来不错。

【讨论】:

猜你喜欢
  • 2019-07-18
  • 2019-04-13
  • 2019-08-23
  • 1970-01-01
  • 1970-01-01
  • 2019-03-06
  • 2023-02-03
  • 2021-02-03
  • 2021-11-11
相关资源
最近更新 更多