算法-选择排序
选择排序(Selection sort)是一种常见的排序算法,算法实现的逻辑每一次从待排序的数组中选出最小(或最大)的一个元素,存放在序列的第一个位置,然后生鲜的元素中选择第二小(或者第二大)的元素放在第二个位置,以此类推,将整个数组排序成功。对于一个长度为N的数组,选择排序大概需要N^2/2的比较和N次交换,运行的时间和输入无关,一个有序的数组和一个无序的数组最终运行的时间是一样的,数据移动的次数是最少的,交换数组的次数和数组的大小呈线性关系。
关键代码实现如下:
-(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;
}
测试:
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");
效果如下:

作者:FlyElephant
出处:http://www.cnblogs.com/xiaofeixiang
说明:博客经个人辛苦努力所得,如有转载会特别申明,博客不求技惊四座,但求与有缘人分享个人学习知识,生活学习提高之用,博客所有权归本人和博客园所有,如有转载请在显著位置给出博文链接和作者姓名,否则本人将付诸法律。
出处:http://www.cnblogs.com/xiaofeixiang
说明:博客经个人辛苦努力所得,如有转载会特别申明,博客不求技惊四座,但求与有缘人分享个人学习知识,生活学习提高之用,博客所有权归本人和博客园所有,如有转载请在显著位置给出博文链接和作者姓名,否则本人将付诸法律。
浙公网安备 33010602011771号