首页 > 编程语言 > 详细

分治算法

时间:2020-03-30 19:05:28      阅读:62      评论:0      收藏:0      [点我收藏+]

1、分治算法的设计思想

例子:二分检索;二分归并,Hanio塔;

-基本思想:

1)将原问题划分或者归结于规模更小的子问题;

2)递归或者迭代求解每个子问题(独立求解);

3)将子问题的解综合到原问题的解答;

注意事项:

1)子问题的和原问题的性质是完全一样的;

2)子问题之间独立求解,互不干扰

3)递归停止的时候,子问题需要足够的小,我们有直接求解的算法!

 

2、二分检索算法;

算法 :Bianary Search ( T, l , r , x )

输入::数组T、下标从 l 到 r、数x;

输出:j //如果x在数组T中,j为下标,否则为0.

1.l =1;r =n;

2.while l<=r do

3.m=[((l+r)/2)]最后向下取整;m是中间位置;

4.if  T[m]=x  then  return  m;   //找到了

5.else   if   T[m]<x    then    l=m+1;

6.else    r=m-1;

7.return  0; //没找到

 

二分检索的思想:

1.通过x和中位数比较,将原问题划分为规模减半的子问题,再对子问题进行二分检索,当子问题的规模为1时,直接T[m]和x比较,相等则返回下标m,否则返回0.

 

二分检索的时间复杂度:

技术分享图片

 

 

3、二分归并排序:

技术分享图片

 

 技术分享图片

 

 技术分享图片

 

分治算法

原文:https://www.cnblogs.com/YM99/p/12600064.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!