选择排序的基本原理
它的工作原理如下:
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
选择排序OC实现
下面提供代码,因为代码是最直观的:
/**
选择排序
@param array 原始数组
*/
- (void)selectionSort:(NSMutableArray *)array {
//获取执行时长
NSDate* tmpStartData = [NSDate date];
for (int i = 0 ; i < array.count; i ++) {
//最小值所处的索引
int minIndex = i;
//内层循环寻找未排序的最小值所处的索引 j是从i的后一个位置开始的 因为前面都是排好序的
for (int j = i +1 ; j < array.count; j ++) {
if (array[j] < array[minIndex]) {
minIndex = j;
}
}
//交换i所在的元素和minIndex所在的元素
[array exchangeObjectAtIndex:i withObjectAtIndex:minIndex];
}
//执行时长记录
double deltaTime = [[NSDate date] timeIntervalSinceDate:tmpStartData];
NSLog(@"cost time = %f", deltaTime);
}
代码里我获取了一下执行时长,这是用于比较多个排序算法之间执行时长的,简单的可以理解为当排序之前获取一个时间,然后再执行完排序后再记录一次时间,最后算出两次时间的差值就是排序的执行时长,
代码实践
NSMutableArray *array = [self randomNumArray:10 randomLeft:1 randomRight:100];
[self selectionSort:array1];