Python零基础备战24蓝桥杯----归并排序,快速排序

        记录python零基础备战24蓝桥杯,由于个人懒惰,而且容易忘事,所以现以此方式来督促自己学习,在学习算法的过程中,必不可少的就是要学习一些基础算法的实现,对于本文来说,虽然python中自带一些排序函数,如sort函数----list.sort(cmp=None, key=None, reverse=False),sorted函数----sorted(iterable[, cmp[, key[, reverse]]]),但是学习算法的基础实现有利于对算法的深入了解,可以通过学习基础的排序算法来对分治思想有一个大致的了解。(本文只涉及对算法的实现,具体的原理可以参考其他文章,本文不过多展示)

        归并排序

def gui(q, l, r):
    if l >= r:
        return
    else:
        mid = l + r >> 1
        gui(q, l, mid)
        gui(q, mid + 1, r)
        i, j, tmp = l, mid + 1, []
        while i <= mid and j <= r:
            if q[i] <= q[j]:
                tmp.append(q[i])
                i += 1
            else:
                tmp.append(q[j])
                j += 1
        while i <= mid:
            tmp.append(q[i])
            i += 1
        while j <= r:
            tmp.append(q[j])
            j += 1
        q[l:l+len(tmp)] = tmp

        快速排序

def quicksort(nums, start, end):
    if start >= end:
        return
    left, right = start, end
    pivot = nums[(start + end) // 2]

    while left <= right:
        while left <= right and nums[left] < pivot:
            left += 1
        while left <= right and nums[right] > pivot:
            right -= 1
        if left <= right:
            nums[left], nums[right] = nums[right], nums[left]
            left += 1
            right -= 1
    quicksort(nums, start, right)
    quicksort(nums, left, end)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值