當數據量比較多的時候,使用系統自帶的排序方式更高效sortedArrayUsingComparator,親測當數據量為100時,系統的排序方法比冒泡法快10倍,數據量越大優勢越明顯;
當數據量比較少的時候使用冒泡法會快一點。
NSMutableArray * arr = [NSMutableArray new];
for (int i = 0; i < 100; i ++) {
int s = arc4random() % 1000;
[arr addObject:[NSString stringWithFormat:@"%d", s]];
}
//冒泡法排序
CFAbsoluteTime start = CFAbsoluteTimeGetCurrent();
for (int i = 0; i < arr.count; i++) {
for (int j = 0; j < arr.count - i - 1; j++) {
if ([arr[j] integerValue] > [arr[j + 1] integerValue]) {
[arr exchangeObjectAtIndex:j withObjectAtIndex:(j + 1)];
}
}
}
CFAbsoluteTime end? = CFAbsoluteTimeGetCurrent();
NSLog(@"time cost: %0.3f ms", (end - start)*1000);
CFAbsoluteTime start1 = CFAbsoluteTimeGetCurrent();
NSArray * sortArr = [arr sortedArrayUsingComparator:^NSComparisonResult(id? _Nonnull obj1, id? _Nonnull obj2) {
NSInteger val1 = [obj1 integerValue];
NSInteger val2 = [obj2 integerValue];
//規定排序的規則
if (val1 > val2) {
return NSOrderedDescending;
}else {
return NSOrderedAscending;
}
}];
CFAbsoluteTime end1? = CFAbsoluteTimeGetCurrent();
NSLog(@"time cost: %0.3f ms\n, %@\n %@", (end1 - start1)*1000, arr, sortArr);