今朝、このスレッドに出くわしました。並べ替えられた配列を処理する方が、並べ替えられていない配列よりも速いのはなぜですか? 本当に面白いと思いました!
Objective-C で試してみたかったのですが、実装中に整数の配列をソートするという問題に直面しました。したがって、次の質問です。
arraySize
0 から 256 までのランダムな値で初期化された整数の配列を考えてみましょう。
int data[arraySize];
for (int c = 0; c < arraySize; ++c)
{
data[c] = arc4random() % 256;
}
この配列をソートし、結果を別の整数配列に格納したいと思います。C++ では、次のようなことができます。
std::sort(data, ...);
Java では、以下を使用します。
Arrays.sort(data);
Objective-C では、次のようにしました。
int sortedData[arraySize];
NSArray* sortedArray = [NSArray array];
// Initialize the array to sort.
for ( int i = 0 ; i < arraySize ; ++i )
{
sortedArray = [sortedArray arrayByAddingObject:[NSNumber numberWithInt:data[i]]];
}
// Sort the array.
sortedArray = [sortedArray sortedArrayUsingSelector:@selector(compare:)];
// Copy the array back into a int[] array.
for (int c = 0; c < arraySize; ++c)
{
sortedData[c] = [sortedArray[c] intValue];
}
それは機能しますが、それは本当に苦痛であり、まったく最適化されていないようです! どうすればこれを改善できますか?