我有一個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