基本思想
简单选择排序(simple selection sort)将数组分为有序区和无序区,每次循环从无序区中选出最小的值放入有序区的最后
比如有个数组@[3,4,1,5,8,2,0,9];
第一步将第0位作为有序区
第二步从第一位到最后一位中找出最小的值
第三步将最小值所在位和第0位做数值交换(3和0做交换)
第四步重复从第二位到最后一位中找出最小的值
第五步将最小值所在位和第1位做数值交换
依次循环下去~~~~~~
Object-C代码实现如下:
/**
* 简单选择排序
*
* @param dataArray 要排序的数据源
*
* @return 已排序的数据
*/
+ (NSArray *)simpleSelectSort:(NSArray *)dataArray {
NSMutableArray *resultArray = [NSMutableArray arrayWithArray:dataArray];
NSInteger min;
for (NSInteger i = 0; i < resultArray.count; i ++) {
min = i;//最小值下标
for (NSInteger j = i + 1; j < resultArray.count; j ++) {
if (resultArray[min] > resultArray[j]) {
min = j;//保存最小值下标
}
}
if (min != i) {//交换
[resultArray exchangeObjectAtIndex:min withObjectAtIndex:i];
}
NSLog(@"i=%ld array:%@",(long)i,resultArray);
}
return resultArray;
}