排序大数组

时间:2014-08-02 12:01:45

标签: objective-c sorting nsmutablearray

我有一个包含~500k对象的数组,当开始排序时,我的应用程序崩溃了。 _objects是NSMutableArray。建议我如何快速排序大数组。

  - (void)sort1 {
        [_objects sortUsingComparator:^NSComparisonResult(id a, id b) {
            NSNumber *first = [(Obj *)a name];
            NSNumber *second = [(Obj *)b name];
            return [second compare:first];
        }];

        [self.tableView reloadData];
    }

2 个答案:

答案 0 :(得分:2)

有了这么多数据,您可以考虑使用不同的方法。毕竟,没有人可能滚动包含~500k项目的tableview。将数据存储在SQLITE数据库中,然后在数据库中查询感兴趣的项目并仅对这些项目进行排序可能更有意义。

答案 1 :(得分:1)

一些想法:

  • 按顺序对数组的较小部分进行排序,然后将它们合并在一起(可以分多步完成)。

  • 进一步考虑这个想法,您可以使用一个或多个文件来存储中间数组,从而减少所需的内存量(尽管这很可能会减慢速度,比崩溃更好)