NSArray
with オブジェクトと double を持つ C 配列があります。NSArray
C 配列の値に基づいてオブジェクトを並べ替えたいと思います。
私が考えることができる唯一の方法は以下のとおりです(このSOの質問に基づいて):
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 程度になると予想されます。