我有一个NSArray
对象和一个带有双精度数的 C 数组。我想NSArray
根据 C 数组值对对象进行排序。
我能想到的唯一方法如下(基于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 之间。