简单选择排序

本文介绍了一种直观且简单的排序算法——简单选择排序的基本思想及实现步骤,并通过实例演示了其运行过程,最后分析了该算法的时间复杂度、空间复杂度及其稳定性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单选择排序

简单选择排序是最简单直观的一种算法,基本思想为每一趟从待排序的数据元素中选择最小(或最大)的一个元素作为首元素,直到所有元素排完为止。

简单选择排序思路

在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止

简单选择排序运行过程

初始值: 3  1  5  7  2  4  9  6
第一趟: 1  3  5  7  2  4  9  6
第二趟: 1  2  5  7  3  4  9  6
第三趟: 1  2  3  7  5  4  9  6
第四趟: 1  2  3  4  5  7  9  6
第五趟: 1  2  3  4  5  7  9  6
第六趟: 1  2  3  4  5  6  9  7
第七趟: 1  2  3  4  5  6  7  9
第八趟: 1  2  3  4  5  6  7  9

简单选择排序代码

- (void)sampleSelectSort {
    for (int i = 0; i < self.marray.count - 1; i ++) {        
        for (int j = i + 1; j < self.marray.count; j ++) {
            if (self.marray[j] < self.marray[i]) {
                [self.marray exchangeObjectAtIndex:i withObjectAtIndex:j];
            }
        }
    }
}

性能(算法时间、空间复杂度、稳定性)分析

  1. 时间复杂度

    比较次数是(n-1)+(n-2)+…+2+1=n(n-1)/2,空间复杂度为O(n^2)。

  2. 空间复杂度

    空间复杂度为O(n)。

  3. 稳定性

    简单选择排序是一种不稳定排序算法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值