在使用分治法时,使用递归算法是解决问题的利器.下面我们用二分搜索,这个最典型的分治问题来举例,看看分治算法是如何进行工作的....解题思路:
从问题的描述来看,如果是n个数,最坏的情况我们得猜n次才可以成功,其实我们没有必要非得一个个的去猜,这显然是一个笨方法,因为这些数是有序的,我们可以按照折半查找的方式,每次和中间的元素去比较...那我们现在思路有了,可以将问题抽象描述出来:
给定n个元素,假设这些元素是有序的,从中查找特定元素x....算法设计:
使用一维数组S[]放置该有序序列,设置变量low和high表示查找的上下界,middle表示中间的位置,x为特定的查找元素.
1:初始化.令low=0(S[]中的第一位数),high=n-1...(S[]中最后一位数).
2:middle = (low+high)/2,表示中间的查找范围.
3:判断low<high是否成立,如果成立,继续下一步,否则结束.
4:判断x与S[middle]的关系,