简单选择排序算法

在简单选择排序过程中,所需移动记录的次数比较少。最好情况下,即待排序记录初始状态就已经是正序排列了,则不需要移动记录。

最坏情况下,即待排序记录初始状态是按第一条记录最大,之后的记录从小到大顺序排列,则需要移动记录的次数最多为3(n-1)。简单选择排序过程中需要进行的比较次数与初始状态下待排序记录序列的排列情况无关。当i=1时,需进行n-1次比较;当i=2时,需进行n-2次比较;依次类推,共需要进行的比较次数是(n-1)+(n-2)+…+2+1=n(n-1)/2,即进行比较操作的时间复杂度为O(n^2),进行移动操作的时间复杂度为O(n)。

简单选择排序是不稳定排序。

image.png

每一趟选出最小的数放到前面

NSMutableArray *arrSort = [NSMutableArray arrayWithArray:@[@(7), @(3), @(15), @(5), @(11), @(2), @(4), @(9), @(6)]];

- (void)selectionSort:(NSMutableArray *)arrSort {
    int i ;
    for (i = 0; i < arrSort.count-1; i++) {
        int temp = 0;
        for (int j = i + 1; j < arrSort.count; j++) {
            if (arrSort[j] < arrSort[i]) {
                temp = [arrSort[j] intValue];
                arrSort[j] = arrSort[i];
                arrSort[i] = @(temp);
            }
        }
    }
    NSLog(@"%@",arrSort);
}
第0趟:  2 7 15 5 11 3 4 9 6
第1趟:  2 3 15 7 11 5 4 9 6
第2趟:  2 3 4 15 11 7 5 9 6
第3趟:  2 3 4 5 15 11 7 9 6
 第4趟:  2 3 4 5 6 15 11 9 7
第5趟:  2 3 4 5 6 7 15 11 9
第6趟:  2 3 4 5 6 7 9 15 11
 第7趟:  2 3 4 5 6 7 9 11 15
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 5,323评论 0 52
  • 概述:排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    每天刷两次牙阅读 3,837评论 0 15
  • 概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的...
    Luc_阅读 2,387评论 0 35
  • 一、 单项选择题(共71题) 对n个元素的序列进行冒泡排序时,最少的比较次数是( )。A. n ...
    貝影阅读 9,449评论 0 10
  • 2017年面临职业转行的关口,我的一切从陌生的环境,陌生的工作,陌生的地方,还有陌生的人,我己经准备好,从零开始学...
    雁过无痕有晴天阅读 257评论 0 0

友情链接更多精彩内容