分而治之与递归

快速排序

    • 分而治之D&C与递归
      • 递归求和
      • 递归求列表中最大值
      • 递归与快速排序

分而治之D&C与递归

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

分而治之与递归_第1张图片

递归求和

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 著 袁国忠 译. 算法图解

你可能感兴趣的:(Python算法)