我有一个NSArray
与对象和一个C数组与双打。我想根据C数组值排序NSArray
对象。基于C数组值排序`NSArray`
我能想到的唯一的办法是以下(基于this SO question):
NSArray *sortedArray;
sortedArray = [origArray sortedArrayUsingComparator:^NSComparisonResult(id a, id b)
{
// Getting c array values at the same indices as the objects being compared
NSNumber *aValue = @(cArray[[origArray indexOfObject:a]]);
NSNumber *bValue = @(cArray[[origArray indexOfObject:b]]);
// Returning comparison result
return [aValue compare:bValue];
}];
但我认为indexOfObject:
部分是有点昂贵。是这样吗?
如果是这样,有没有更快的方法来做到这一点?
编辑:
为了提供更多的背景下,此排序是优化算法健身评估的一部分。在我的计划中,我做了一个基本的分析,并且健身评估代码变成了瓶颈。因此,我试图优化它。
此外,阵列中元素的数量预计将从大约100到10k最大。
谢谢你的回答和清晰优雅的例子。我在我的问题中添加了一些信息以供澄清。如果我理解正确,这里的一般方法会以某种方式创建一个元组(通过结构或通过关联对象或常规对象,如@JeremyP建议的)来创建对象排序值对。 – insys