选择排序(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,如需转载请自行联系原作者