一、快速排序
快速排序使用的是分而治之的思路,其算法思路:设置一个比较值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)
递归算法中包含两个重要元素:递归条件和基线条件,基线条件是防止递归函数进入无限循环或者死循环使用,递归条件是函数调用自身的递归规则。