今天早上,我偶然发现了这个线程为什么处理排序数组比处理未排序数组更快?发现它真的很有趣!
我想在 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];
}
它有效,但在我看来这是一个真正的痛苦,它根本没有优化!我该如何改进呢?