插入排序的基本邏輯就是将最小的元素移動到左邊,左邊的數組是有序的,右邊的數組基本上不需要動,插入排序運作的時間很大情況取決于輸入元素的初始順序,對于一個很大的且其中的元素已經有序的數組進行排序會比随機順序的數組或者逆序的數組快很多。插入排序對部分有序的數組是非常有效的,數組中的每個元素都離最終的位置不遠,數組中隻有幾個元素位置不正确可以建議選擇插入排序。
關鍵代碼:
1
2
3
4
5
6
7
8
9
10
11
<code>-(</code><code>NSMutableArray</code> <code>*)insertSort:(</code><code>NSMutableArray</code> <code>*)arr{</code>
<code> </code><code>for</code> <code>(</code><code>NSInteger</code> <code>i=1; i<[arr count]; i++) {</code>
<code> </code><code>for</code> <code>(</code><code>NSInteger</code> <code>j=i; j>0&&[arr[j] integerValue]<[arr[j-1] integerValue]; j--) {</code>
<code> </code>
<code> </code><code>NSInteger</code> <code>temp=[arr[j] integerValue];</code>
<code> </code><code>arr[j]=[</code><code>NSNumber</code> <code>numberWithInteger:[arr[j-1] integerValue]];</code>
<code> </code><code>arr[j-1]=[</code><code>NSNumber</code> <code>numberWithInteger:temp];</code>
<code> </code><code>}</code>
<code> </code><code>}</code>
<code> </code><code>return</code> <code>arr;</code>
<code>}</code>
調用:
12
13
14
15
16
17
18
<code>NSMutableArray</code> <code>*arr=[[</code><code>NSMutableArray</code> <code>alloc]initWithCapacity:10];</code>
<code>[arr addObject:@</code><code>"9"</code><code>];</code>
<code>[arr addObject:@</code><code>"3"</code><code>];</code>
<code>[arr addObject:@</code><code>"2"</code><code>];</code>
<code>[arr addObject:@</code><code>"8"</code><code>];</code>
<code>[arr addObject:@</code><code>"1"</code><code>];</code>
<code>[arr addObject:@</code><code>"10"</code><code>];</code>
<code>[arr addObject:@</code><code>"4"</code><code>];</code>
<code>[arr addObject:@</code><code>"0"</code><code>];</code>
<code>MySort *sort=[[MySort alloc]init];</code>
<code>NSMutableArray</code> <code>*resultArr= [sort insertSort:arr];</code>
<code>for</code> <code>(</code><code>NSInteger</code> <code>i=0; i<[resultArr count]; i++) {</code>
<code> </code><code>NSLog</code><code>(@</code><code>"%@"</code><code>,[resultArr objectAtIndex:i]);</code>
<code>NSLog</code><code>(@</code><code>"iOS技術交流群:228407086"</code><code>);</code>
<code>NSLog</code><code>(@</code><code>"原文位址:http://www.cnblogs.com/xiaofeixiang"</code><code>);</code>
效果如下:

本文轉自Fly_Elephant部落格園部落格,原文連結:http://www.cnblogs.com/xiaofeixiang/p/4582309.html,如需轉載請自行聯系原作者