[python]排序操作(持续更新中)

Ctrl+f搜关键词,搜不到找其他博客,下面肯定没有

时间复杂度

在这里插入图片描述

冒泡排序

相邻两个数比较,前面比后面大,则交换位置

选择排序

通过确定一个 Key 最大或最小值,再从带排序的的数中找出最大或最小的交换到对应位置。再选择次之。

插入排序

先得到第一个数,下一个数再根据大小排在序列内,以此类推

希尔排序
#分为有序区和无序区,无序区第一个和有序区最后一个比较,再和有序区倒数第二个比较,以此类推,知道找到位置,然后整体后移一位
def shellSort_2(nums):
    n = len(nums)  # 数组的长度
    # 设定一个增量gap
    gap = n // 2
    while gap >= 1:
        # 分组
        for i in range(gap, n):
            # i = 5, curNum=43, idx = 0
            # [43, ..., 44, ...., 85]
            # i=7, curNum=7, idx=2
            # [..., 7, ... 59, ...]
            curNum = nums[i]  # 当前要插入的无序区的元素的值
            idx = i - gap  # 当前元素所在小组的有序区的最后一个元素的索引
            while idx >= 0 and curNum < nums[idx]:
                nums[idx+gap] = nums[idx]
                idx -= gap
            nums[idx+gap] = curNum
        gap //= 2  # 缩小增量


# gap=5 [44, 43, 85], [12, 94], [59, 7], [36, 35], [62, 52]
test = [44, 12, 59, 36, 62, 43, 94, 7, 35
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值