python(八):快速排序和递归算法

一、快速排序

快速排序使用的是分而治之的思路,其算法思路:设置一个比较值a,比a小的值放到 less里面,比a 大的值放大large里面,然后再对less和large里面进行同样的操作,类似于递归操作,其算法实现如下所示:

def quick_sort(arr):

    if len(arr) < 2:
        return arr
    else:
        pivot = arr[0]
        less = [i for i in arr[1:] if i <= pivot]
        large = [i for i in arr[i:] if i > pivot]

    return quick_sort(less) + [pivot] + quick_sort(large)

上述代码:

如果数组的长度小于 2 ,那么表示这个数组是包含一个元素或者是空,否则执行比较功能,本代码段中默认第一个为比较项,可以针对不同的情况设置不同的 pivot,比如 pivot = arr[mid],其中mid表示中间元素,不同的设置方法,影响算法的运行时间。less表示的是个数组,large同理,pivot表示的是一个元素,所以最后使用:quick_sort(less) + [pivot] + quick_sort(large) 返回的是一个数组。

在python中有现成可以使用的快速排序算法的代码函数:qsort(),其功能更好,运算更快。

二、递归算法

递归算法实现方式

def fac(n):
    if n < 1:
        return 0
    else:
        return n*fac(n-1)

递归算法中包含两个重要元素:递归条件和基线条件,基线条件是防止递归函数进入无限循环或者死循环使用,递归条件是函数调用自身的递归规则。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值