【问题标题】:How to keep an array sorted如何保持数组排序
【发布时间】:2010-10-05 18:36:27
【问题描述】:

我正在重构一个涉及传递大量数组的项目。目前,每个返回数组的方法都会在返回之前对其进行排序。这并不理想,有几个原因 - 有很多重复的代码,对数组进行两到三次排序效率低下,编写新函数太容易但忘记在返回之前对数组进行排序。

我正在寻找一种方法来保证数组始终按字母顺序排列。我目前的想法是继承NSMutableArray 和/或NSArray 来创建一个按字母顺序排列的数组类。我需要覆盖所有创建或修改数组的方法以调用super,然后自行排序。

这听起来合理吗,还是有更好的方法?

编辑: 由于提到了性能问题,我将包括我项目中的相关信息。速度不是一个重要的问题。整个过程只需要几秒钟,而且该工具只是偶尔使用一次。所以简单和明显的正确性更重要。

此外,数组的用例是特定的。当返回一个数组时,调用者总是至少访问数组中的每个元素一次。

【问题讨论】:

    标签: objective-c cocoa sorting nsarray subclassing


    【解决方案1】:

    平衡二叉树是保持项目排序的标准且有效的方法。几乎任何使用普通数组进行随机访问的方法都会很慢。跳过列表也很有效,您可以将功能添加到数组类中。

    【讨论】:

    • 我从来没有听说过跳过列表——去维基百科阅读它们。谢谢!
    【解决方案2】:

    查看CHDataStructures。它是一个具有许多自排序数据结构的框架,例如平衡二叉树等等。

    【讨论】:

    • 我会检查这些,这看起来可能是我要找的。​​span>
    猜你喜欢
    • 2022-01-10
    • 1970-01-01
    • 2012-11-22
    • 1970-01-01
    • 1970-01-01
    • 2013-12-19
    • 1970-01-01
    • 2010-10-04
    • 1970-01-01
    相关资源
    最近更新 更多