使用OC写算法之选择排序

选择排序的基本原理

它的工作原理如下:
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

选择排序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];
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容