快排和归并的python实现

作为高效的排序算法,归并和快排常出现在面试中,让快速手写算法。
下面贴出python版本

#快速排序 分治和递归的思想  随机选一个基准点,比它小的放左边,比它大的放右边

def quickSort(nums:list,low,high):
    if low >= high:
        return
    
    pivot = partition(nums,low,high)
    quickSort(nums,low,pivot-1)
    quickSort(nums,pivot+1,high)
    

def partition(nums,low,high):
    index = random.randint(low,high)
    #将随机选择的值与末尾值交换位置
    nums[index],nums[high] = nums[high],nums[index] 
    i,j = low,low
    while j<high:
        if nums[j] < nums[high]:
            nums[j],nums[i] = nums[i],nums[j]
            i+=1
        j+=1
    #将末尾的随机值,放回中间位置,同时返回这个分隔点位置
    nums[high],nums[i] = nums[i],nums[high]
    return i

#快速排序 基本思想分治 随机选一个基准点,比它小的放左边,比它大的放右边

在这里插入代码片
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值