Python——排序(冒泡、选择、插入、快速、堆..) 时间复杂度 (个人向)

本文介绍了排序算法的时间复杂度和大O表示法,详细讲解了冒泡排序、选择排序、直接插入排序和快速排序的思路,并提到了堆排序的概念和操作。这些排序算法在Python中的应用广泛,理解其工作原理对于优化代码性能至关重要。
摘要由CSDN通过智能技术生成

一、时间复杂度

将程序执行的计算步骤的总和叫做时间复杂度
时间复杂度实际上用来描述算法时间效率

例:如T(n)=n2+5n+6与T(n)=4n2+2n+1它们的频度不同,但时间复杂度相同,都为O(n2)。随着问题规模n的不断增大,上述时间复杂度不断增大,算法的执行效率越低。
总结:大O表示法就是将一个T(n)时间复杂度的系数去掉只留下最特征的部分就是大O表示法。
引用:
在这里插入图片描述

二、排序

常用排序:
冒泡排序 - (交换排序) 快速排序 - (交换排序)
选择排序 - (选择排序)、堆排序 - (选择排序)
直接插入排序 - (插入排序)、希尔排序 - (插入排序)、
(归并排序、、桶/基数排序)
——————————————
冒泡排序
思路:
1.重复遍历要排序的数列n个元素,一次比较相邻两个元素 一次比较,保证
右边的元素始终大于左边
的元素;
(第一轮结束后,数列中最后一个元素一定是当前数列中最大值)
2.对数列当中剩下的n-1个元素,再次执行步骤1
3.对于长度为n的数列,一共需要执行n-1次轮的比较

"""冒泡排序"""
def bubble_sort(lst):
    for i in range(len(lst) - 1):
        for j in range(len(lst) - 1 - i):
            if lst[j] > lst[j + 1]:
                lst[j], lst[j + 1] = lst[j + 1], lst[j]
    return lst


l1 = [33, 11, 44, 22, 55, 66, 12, 42, 23, 45, 97, 54]
print(bubble_sort(l1))
#[11, 12, 22, 23, 33, 42, 44, 45, 54, 55, 66, 97]

————————————————
选择排序
思路:
1.遍历待排序数列,并定义当前位置的元素为此次循环最小值
(首先找到最小的元素)
2.若最小元素不是待排序数列的

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值