NSArray的排序

當數據量比較多的時候,使用系統自帶的排序方式更高效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);

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 轉自SpeedBoy007的專欄 移動互聯網 http://blog.sina.com.cn/speedboy00...
    難卻卻閱讀 580評論 0 0
  • 總結一下常見的排序算法。 排序分內排序和外排序。內排序:指在排序期間數據對象全部存放在內存的排序。外排序:指在排序...
    jiangliang閱讀 1,375評論 0 1
  • 背景 一年多以前我在知乎上答了有關LeetCode的問題, 分享了一些自己做題目的經驗。 張土汪:刷leetcod...
    土汪閱讀 12,769評論 0 33
  • 一只駱駝,辛辛苦苦穿過了沙漠,一只蒼蠅趴在駱駝背上,一點力氣也不用,也過來了。蒼蠅譏笑說:“駱駝,謝謝你辛苦把我駝...
    性淡如菊閱讀 488評論 0 1
  • 小記: 追太陽的人的故事應是2013年中 荊棘鳥的故事應是2014年中 樹先生的故事應是2015年中 遠行客的故事...
    還樹先生閱讀 201評論 0 0