简单选择排序 | 通俗易懂的理解排序过程

谢谢大家对小白的支持,上周更新的冒泡排序,几个点赞也是莫大的鼓励,很开心有朋友留言,说还想看选择排序和堆排序。

最近在博客的评论区认识了一些并肩奋战的小伙伴,有朋友说每天都来看我的博客,也有朋友认真实现我的代码后及时指出错误,有朋友也会和我分享他的面经 说是回报我一直的分享~ 这些都是我最初的最初没想过、也没想到的。今天,第一次粉丝数量超越了原创数量,评论区也多了很多交流和鼓励,不再是我一个人不停的写不停的学。我就是很开心,起初自己写给自己的博客,竟然发挥着一点点的影响力,认真的付出被大家认真的对待。嘻嘻,谢谢你们。

不要煽情了,说一说选择排序。


1.1 实现过程

[3,5,4,2,1]从小到大排序,看看选择排序实现的中间步骤。

在这里插入图片描述


1.2 关键思路

冒泡排序一样,简单选择排序也是一轮一轮的,每一轮排好一个最值的位置,再不断缩小比较范围。

每一轮中,

  1. 设定基准(本例中,以比较范围内,第一个元素为基准);
  2. 更新最小值下标
  3. 交换基准与最值的位置(本例中,是选取最小值)。

这样,每一轮结束后,最小值都被往前排。

下一轮,则缩小范围,对未排序的区域重复以上过程


1.3 代码实现
def SelectSort(arr):
    n = len(arr)
    for i in range(0, n):
        min_index = i	# 设定基准
        for j in range(i+1, n):
            if arr[j] <= arr[min_index]:
                min_index = j	#更新最小值下标
        arr[i], arr[min_index] = arr[min_index], arr[i]	# 交换基准与最值的位置
    return arr

1.4 结合代码和中间过程,再次体会

在这里插入图片描述
在这里插入图片描述

1.5 评价
  • 每轮操作O(n)次,共O(n)轮,时间复杂度O(n^2)。

  • 额外空间开销出在交换数据时那一个过渡空间,空间复杂度O(1)。


你们还想看什么?

❤️ 「更多编程题」

剑指Offer [Python] | 目录索引

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值