选择排序(Selection sort)是一种常见的排序算法,算法实现的逻辑每一次从待排序的数组中选出最小(或最大)的一个元素,存放在序列的第一个位置,然后生鲜的元素中选择第二小(或者第二大)的元素放在第二个位置,以此类推,将整个数组排序成功。对于一个长度为N的数组,选择排序大概需要N^2/2的比较和N次交换,运行的时间和输入无关,一个有序的数组和一个无序的数组最终运行的时间是一样的,数据移动的次数是最少的,交换数组的次数和数组的大小呈线性关系。
关键代码实现如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
-( NSMutableArray *)selectorSort:( NSMutableArray *)arr{
for ( NSInteger i=0; i<[arr count]; i++) {
NSInteger min=i;
for ( NSInteger j=i+1; j<[arr count]; j++) {
if ([arr[j] integerValue]<[arr[min] integerValue]) {
min=j;
}
}
NSInteger temp=[arr[i] integerValue];
arr[i]=[ NSNumber numberWithInteger:[arr[min] integerValue]];
arr[min]=[ NSNumber numberWithInteger:temp];
}
return arr;
} |
测试:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
NSMutableArray *arr=[[ NSMutableArray alloc]initWithCapacity:10];
[arr addObject:@ "4" ];
[arr addObject:@ "3" ];
[arr addObject:@ "6" ];
[arr addObject:@ "9" ];
[arr addObject:@ "1" ];
[arr addObject:@ "10" ];
[arr addObject:@ "8" ];
[arr addObject:@ "0" ];
MySort *sort=[[MySort alloc]init]; NSMutableArray *resultArr= [sort selectorSort:arr];
for ( NSInteger i=0; i<[resultArr count]; i++) {
NSLog (@ "%@" ,[resultArr objectAtIndex:i]);
} NSLog (@ "iOS技术交流群:228407086" );
NSLog (@ "原文地址:http://www.cnblogs.com/xiaofeixiang" );
|
效果如下:
本文转自Fly_Elephant博客园博客,原文链接:http://www.cnblogs.com/xiaofeixiang/p/4579446.html,如需转载请自行联系原作者