分而治之与递归

分而治之D&C与递归

D&C算法是递归的,使用D&C解决问题的过程包括两个步骤:
(1)找出基线条件(base case),这种条件必须尽可能简单;
(2)不断地将问题分解(缩小规模),直到符合基线条件

from 算法图解

递归求和

def sum2(arr):
	if arr == []: # base case
		return 0
	# recursive case
	return arr[0] + sum2(arr[1:])

递归求列表中最大值

def findmax(arr):
	if len(arr) == 2: # base case
		return arr[0] if arr[0]>arr[1] else arr[1]
	# recursive case
	return arr[0] if arr[0] > findmax(arr[1:]) else findmax(arr[1:]) 

递归与快速排序

def quicksort(array):
	if len(array) < 2:
		return array # base case: array that is empty or contains 
					 # only one element is ordered 
	else:
		pivot = array[0] # recursive case and pivot, partitioning
		less = [i for i in array[1:] if i <= pivot]
		greater = [i for i in array[1:] if i > pivoy]
		return quicksort(less) + [pivot] + quicksort(greater)

[美] Aditya Bhargava 著 袁国忠 译. 算法图解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值