【发布时间】:2012-10-23 00:34:11
【问题描述】:
今天早上,我偶然发现了这个帖子Why is it faster to process a sorted array than an unsorted array?,发现它真的很有趣!
我想在 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];
}
它有效,但在我看来这是一个真正的痛苦,它根本没有优化!我该如何改进呢?
【问题讨论】:
标签: objective-c arrays sorting optimization int