排序算法的时间空间复杂度详解加代码

本文详细介绍了选择排序、快速排序、冒泡排序、插入排序和堆排序的原理及其实现,分析了它们的时间复杂度和空间复杂度。选择排序和冒泡排序的时间复杂度均为,空间复杂度为;快速排序平均时间复杂度为,最坏情况下为,空间复杂度为;插入排序的时间复杂度与冒泡排序相同,均为,稳定排序;堆排序的时间复杂度为,空间复杂度为。

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

一、选择排序

原理:每次从列表中选择出最小的数,依次放在从左向右的位置,一个长度为n的列表,有n个位置。

对于列表[2,3,1],选择排序的步骤为

(1)从索引为0的位置开始遍历列表,得到最小值1,与索引为0的数字2换位,得到[1,3,2]

(2)再从索引为1的位置开始遍历列表(因为0的位置已经确定是最小了),得到最小值2,与索引为1的数字3换位,得到[1,2,3]

       可以发现在一个长度为n的列表中,有n个位置,所以我们需要得到n-1次最小值,依次放在对应的位置上。而且对于这n个数,每次得到最小值需要遍历的次数为n-1,n-2,n-3....1。而且在排序之前,这n个数是完全无规则的,它不像堆结构一样,提前知道,子节点小于父节点。因此,对于所以选择排序的最好和最坏的时间复杂度都为\sum n-1=0.5n^{2}+0.5n,也就是O(n^{2})

其代码为:

def selectRank(my_list):

    for j in range(len(my_list)-1):
        maxnum=j
        for i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值