算法第六章 分治学习
一.分治的意思:将一个难以直接解决的大问题,分割成规模较小的相同问题
二.分治的条件:
三.分治例题应用
(一)
1.题目:同时求一个数组中的最大最小值
解题:正常可求解【比较次数为2n-2次】,运用分支,比较次数小【3/2n-2】次
思想:将数组分割成两半,A【1.....n/2】,和A【n/2+1....n】,在每一半中找到最大值最小值,并返回这两个最小值中的最小值,这两个最大值中的最大值。
可用作定理:设数组A【1...n】包含n个元素,其中n是2的幂,仅用3n/2-2次元素比较在数组中找出最大值和最小值是可能的
2. 二分搜索 时间复杂度为O(log n),二分搜索在n个元素组成的数组中搜索某个元素所执行的元素比较次数不超过logn(向上取整)+1
二分搜索算法:whlile循环。递归深度为O(1)
递归二分搜索算法:递归,所需递归空间:O(logn)。递归深度为O(logn),每个递归层次需要O(1)的空间。