zoukankan      html  css  js  c++  java
  • 分治算法

    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、二分归并排序:

     

     

     

    1、分治算法的一般描述:

      

     

     

     

     

    4、芯片测试:

         

     

     

     

     

     

      

     

     

     

    2、快速排序

     

     

     

     

     

     

     

    3、改进分治算法的途径:

    减少子问题:通过子问题之间的依赖关系来减少独立子问题的处理。

    增加预处理;

  • 相关阅读:
    简单工厂模式
    1.go的Hello
    Scrapy003-项目流程
    Django1.9开发博客(6)- 模板继承
    Django开发博客- 页面美化
    Django开发博客- 三部曲
    Django开发博客- 部署
    Django开发博客- 模型
    Django开发博客 入门篇
    内装式模块
  • 原文地址:https://www.cnblogs.com/YM99/p/12600064.html
Copyright © 2011-2022 走看看