递归概念:直接或者间接调用自身的算法,称为递归运算。
分治思想:把一个规模为n的问题分解为k个规模较小的子问题,这些子问题相互独立且与原问题相等,递归解决子问题后再将结果合并
下方为一些应用函数。因为最近再学Python,下面示例方式均用Python代码体现。(逻辑不变,理解就好)
应用之二分法搜索:用分治法的典型例子,对已经排好序的n个元素中,找出某一个值。
思路为:将有序的n个元素大致的分为两半,取中间元素与 x比较,若大于则在右侧同样取剩下元素的中间值进行比较,以此类推
import math
def binary_search(x,list,n):
left =0
right =n-1
while left
middle = math.ceil((left+right)/2) ## 取大于或等于平均数的最小整数
if x== list[middle]:
print("第",middle,"数字为所查找值")
return
elif x>list[middle]:
left = middle
else:
right = middle-1
print("未找到该数值")
list =[1,2,3,4,5,6,7,8,9,10]
num = 8
n= 10
binary_search(num,list,n)
运行结果为:第 7 数字为所查找值<