在objective-c中对键值对进行排序的最有效方法

我有一个键值对数组(不需要调整大小)。键是 64 位 uint,值可以是 32 位。

对这对进行排序的最有效方法是什么?我在网上搜索过,但大多数文档只关心获取排序的键数组。如果该方法只对键进行排序,然后一一查找对应的值,则性能可能不尽如人意。

例如,来自 NSDictionary 的 keysSortedByValue 会给我一个使用它们的值排序的键数组,但我也需要该排序值数组。

Objective-c 中是否有返回排序键和相应值数组的方法?

如果我输入:

uint64  *keys_in;         // e.g., [8, 6, 7, 5, 3, 0, 9]
uint32  *values_in;       // e.g., [0, 1, 2, 3, 4, 5, 6]

只需一步即可完成以下操作:

keys_out            <-- [0, 3, 5, 6, 7, 8, 9]
values_out          <-- [5, 4, 3, 1, 2, 0, 6]
眼泪

这两个数组旨在同步。所以你不应该使用两个数组。如果在某个时候你想删除一个怎么办?您也需要在第二个上将其删除。如果一个改变,另一个需要改变。这是在最后包含错误元素的好方法。

相反,创建一个自定义对象:

@interface CustomObject : NSObject
@property (nonatomic, assign) uint64 keyIn;
@property (nonatomic, assign) uint32 valueIn;
-(id)initWithKey:(uint64)key andValue:(uint32)value;
@end

@implementation CustomObject
-(id)initWithKey:(uint64)key andValue:(uint32)value
{

    if (self)
    {
        _keyIn = key;
        _valueIn = valueIn;
    }
    return self;
}
@end

对于“列表”中的第一个:

CustomObject *first = [[CustomObject alloc] initWithKey:8 andValue:0];

假设现在我们有一个NSArrayCustomObjects

NSArray *sortedArray = [arrayUnsorted sortedArrayUsingComparator:^NSComparisonResult(CustomObject * _Nonnull obj1, CustomObject * _Nonnull obj2) {
        uint64 key1 = [obj1 keyIn];
        uint64 key2 = [obj2 keyIn];
        return [@(key1) compare:@(key2)];
    }];

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Objective C中,最有效的矩阵运算方法是什么?GLKit或CC

来自分类Dev

Objective-C:在Objective-C中找到角度象限的最有效方法

来自分类Dev

对语法VBA进行排序的最有效方法

来自分类Dev

如何在XCode中更有效地复制Objective-C方法名称?

来自分类Dev

Objective-C中的类名称中的有效字符

来自分类Dev

Objective-C中的类名称中的有效字符

来自分类Dev

在Java中同时对三个ArrayList进行排序的最有效方法是什么

来自分类Dev

如何在Objective-C中检查有效对象?

来自分类Dev

直接访问CGRect值与在Swift中对其进行规范化-Objective-C规则仍然有效吗?

来自分类Dev

对Objective-C数组进行排序

来自分类Dev

在Objective-C中对NSArray和NSMutableArray进行排序

来自分类Dev

在Objective-C中对NSArray和NSMutableArray进行排序

来自分类Dev

'self' 不是一个有效的目标。混合使用Objective-C和C ++(Objective-C ++)

来自分类Dev

Objective-C或C ++在OS X上获得有效的全屏分辨率的方法?

来自分类Dev

如何使用NSRegularExpression或Objective-C中的任何其他有效方式来检查GUID(或UUID)的有效性

来自分类Dev

?:在Objective-C中

来自分类Dev

在文件中存储大量由定界符分隔的整数键值对的最有效方法

来自分类Dev

在Objective-C中合并排序

来自分类Dev

spaCy-按标签对实体进行排序的最有效方法

来自分类Dev

根据单独数组的顺序对数组集合进行排序的最有效方法

来自分类Dev

对文本值进行排序的最有效方法是什么?

来自分类Dev

在python中对列表进行冒泡排序最有效吗?

来自分类Dev

从Objective C调用C ++

来自分类Dev

用于Objective-C文字和标识符的有效ASCII字符列表?

来自分类Dev

Objective-C-可可类群的有效子类化

来自分类Dev

Objective-C:UILocalNotification

来自分类Dev

对于..在objective-c

来自分类Dev

Objective C Converter应用

来自分类Dev

委托Objective-C

Related 相关文章

  1. 1

    在Objective C中,最有效的矩阵运算方法是什么?GLKit或CC

  2. 2

    Objective-C:在Objective-C中找到角度象限的最有效方法

  3. 3

    对语法VBA进行排序的最有效方法

  4. 4

    如何在XCode中更有效地复制Objective-C方法名称?

  5. 5

    Objective-C中的类名称中的有效字符

  6. 6

    Objective-C中的类名称中的有效字符

  7. 7

    在Java中同时对三个ArrayList进行排序的最有效方法是什么

  8. 8

    如何在Objective-C中检查有效对象?

  9. 9

    直接访问CGRect值与在Swift中对其进行规范化-Objective-C规则仍然有效吗?

  10. 10

    对Objective-C数组进行排序

  11. 11

    在Objective-C中对NSArray和NSMutableArray进行排序

  12. 12

    在Objective-C中对NSArray和NSMutableArray进行排序

  13. 13

    'self' 不是一个有效的目标。混合使用Objective-C和C ++(Objective-C ++)

  14. 14

    Objective-C或C ++在OS X上获得有效的全屏分辨率的方法?

  15. 15

    如何使用NSRegularExpression或Objective-C中的任何其他有效方式来检查GUID(或UUID)的有效性

  16. 16

    ?:在Objective-C中

  17. 17

    在文件中存储大量由定界符分隔的整数键值对的最有效方法

  18. 18

    在Objective-C中合并排序

  19. 19

    spaCy-按标签对实体进行排序的最有效方法

  20. 20

    根据单独数组的顺序对数组集合进行排序的最有效方法

  21. 21

    对文本值进行排序的最有效方法是什么?

  22. 22

    在python中对列表进行冒泡排序最有效吗?

  23. 23

    从Objective C调用C ++

  24. 24

    用于Objective-C文字和标识符的有效ASCII字符列表?

  25. 25

    Objective-C-可可类群的有效子类化

  26. 26

    Objective-C:UILocalNotification

  27. 27

    对于..在objective-c

  28. 28

    Objective C Converter应用

  29. 29

    委托Objective-C

热门标签

归档