最新公告
  • 欢迎您光临欧资源网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • 《数据结构与算法分析》之不同类型数据结构及其实现算法

    在《数据结构与算法分析》一书中,除了章节中介绍的不同类型的数据结构及其具体实现算法外。不同类型的常见算法思想贯穿全书,本文对其进行总结并一一介绍。

    1. 递归

    2. 递归

    3. 穷举法(枚举法)

    4. 贪心算法(贪心算法)

    5. 分而治之

    6. 动态规划

    7. 迭代

    8. 分支定界法

    9. 回溯

    1. 递归

    递归是顺序计算机中的一种常见算法。它按照一定的规则计算序列中的每一项,通常是通过计算机前面的一些项来得到序列中指定项的值。

    其思想是将一个复杂而庞大的计算过程转化为一个简单过程的多次重复,该算法利用了计算机快速且不知疲倦的机器特性。

    使用场景:

    问:植树节那天,有五个学生参加了植树活动,他们种的树不一样。当被问到第一个同学种了多少棵树时,他指着旁边的第二个同学说他又种了两棵树;问到二班同学,他也说比三班同学多栽了两棵树;..这样,据说比另一个同学多栽了两棵树。最后,当问到第五个学生时,他说他种了10棵树。第一个学生种了多少棵树?

    答:这个程序的递归操作可以用下图表示:

    初始值 a:=10 —– i=1,a=a+2(12) —– i=2,a=a+2(14) — —- i=3,a=a+2(16) —– i=4,a=a+2(18) —- 输出值 18

    2. 递归

    递归算法的特点:

    算法设计注意事项:

    (1) 递归在过程或函数中调用自身;

    (2) 使用递归策略时,必须有一个明确的递归结束条件,称为递归退出。

    使用场景:

    [问题] 编写一个函数 fib(n),计算斐波那契数列的第 n 项。斐波那契数列如下:0、1、1、2、3、…用到贪心策略的算法用到贪心策略的算法,即:

    fib(0)=0;

    纤维①=1;

    fib(n)=fib(n-1)+fib(n-2)(当 n>1 时)。

    写成递归函数:

    int fib(int n){
    if (n==0) return 0;
    if (n==1) return 1;
    if (n>1) return fib(n-1)+fib(n-2);
    }

    3. 穷举法(枚举法)

    穷举法,或者说蛮力法,其基本思想是:对于要解决的问题,枚举其所有可能的情况,逐一判断哪些情况符合问题的要求,从而得到问题的解。

    穷举法是利用计算机计算速度快、精度高的特点,对所有可能的情况进行测试,不遗漏地解决问题,找到符合要求的答案。因此,列举法就是牺牲时间来换取答案的全面性。

    算法结构:

    通常使用一个while循环。

    使用场景:

    4. 贪心算法(贪心算法)

    指标的选择:

    贪心算法和动态规划算法的区别:

    使用场景:

    5. 分而治之

    分治法能解决的问题一般具有以下特点:

    使用场景:

    6. 动态规划

    动态规划算法特点:

    动态规划一般可分为四类:直线运动规则、区域运动规则、树形运动规则和背包运动规则。

    使用场景:

    7. 迭代

    算法特点:

    使用迭代算法解决问题需要以下三个方面的工作:

    使用场景:

    日本数学家 Shizuo Yakaku 在研究自然数时发现了一个奇怪的现象:对于任何自然数 n,如果 n 是偶数,则将其除以 2;如果 n 是奇数,则将其乘以 3,然后加 1。这样经过有限次的运算,总能得到自然数1。人们将这一发现称为“药阁静雄猜想”。

    要求:编写一个程序,从键盘输入一个自然数n,经过有限次的操作,打印出n变成自然数1的整个过程。

    分析:定义迭代变量为n。根据谷角猜想的内容,可以得到两种情况下的迭代关系:当n为偶数时,n=n/2;当n为奇数时,n=n*3+1。用QBASIC语言描述为:

    if n 为偶数 then
    n=n/2
    else
    n=n*3+1
    end if

    这是一个需要计算机反复执行的迭代过程。这个迭代过程需要重复多少次才能使迭代变量n最终变成自然数1,这是我们无法计算的。

    8. 分支定界法

    两种常见的方法是:

    分支定界法的特点:

    分支定界法与回溯法的区别:

    使用场景:

    9. 回溯

    回溯法(exploration and backtracking method)是一种最优搜索方法,也称为启发式方法,根据最优条件向前搜索以达到目标。但是,当探索到了一定的步骤,发现原来的选择不是最优的或者没有达到目标的时候,就会退后一步,重新选择。称为“回溯点”。

    算法的基本思想:

    使用场景:

    回溯算法实际上是一种穷举算法,它枚举所有可能的情况并选择一个可行的解决方案或最优的解决方案。用于搜索算法,例如:

    站内大部分资源收集于网络,若侵犯了您的合法权益,请联系我们删除!
    欧资源网 » 《数据结构与算法分析》之不同类型数据结构及其实现算法

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    欧资源网
    一个高级程序员模板开发平台

    发表评论