您的位置:首页 > 理论基础 > 数据结构算法

数据结构与算法 java版 学习笔记 第二章

2013-08-14 19:11 253 查看
该章节也是一章铺垫的章节,介绍了1.计算算法复杂度和空间复杂度的方法和几种常见的算法复杂度,

2.还有数列最大值子数列的4种算法优劣,

3.关于分治法的思想(分而食之),

4最大公约数的求法

算法复杂度的计算这里就不赘述了。

一下是 计算数列最大和子数列的几种算法









其实求最大子列的算法核心就是:掐头去尾,那头 为什么掐掉呢? 必须是因为头的和是小于0的,至于尾部的处理,其实 算法1,2,4 都是一个意思。算法3虽然不是最优解,但是确实可以解决类似问题的通解,没思路了就可以用这个。

至于求最大公约数的算法,貌似网上到处都是,但原理到底是啥?两个整数的最大公约数是能够同时整除它们的最大的正整数。辗转相除法基于如下原理:两个整数的最大公约数等于其中较小的数和两数的相除余数的最大公约数。例如,252和105的最大公约数是21(252 = 21 × 12;105 = 21 × 5);因为252 /
105 = 2余42,所以105和42的最大公约数也是21。在这个过程中,较大的数缩小了,所以继续进行同样的计算可以不断缩小这两个数直至其中一个变成零。这时,所剩下的还没有变成零的数就是两数的最大公约数。由辗转相除法也可以推出,两数的最大公约数可以用两数的整数倍相加来表示,如21 = 5 × 105 + (−2) × 252。这个重要的等式叫做贝祖等式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: