数据结构学习笔记(绪论一)
来源:互联网 发布:linux signal 处理 编辑:程序博客网 时间:2024/04/28 13:03
绪论一
Programs= Algorithms+Data Structus
算法分析
一个好的算法:运算速度尽可能快,存储空间尽可能少。
算法分析:
a. 正确性;
b. 成本(时间+空间) 时间成本—>基本操作次数
Turning Machine(图灵机模型)
Random Access Machine(RAM)
Big-O-notation
复杂度分析:
a .迭代:技术求和;
b. 递归:递归跟踪+递归方程,猜测+验证。
递归和迭代的区别
递归:函数自己调用自己,相当于自顶向下,减而治之。
使用递归要注意的有两点:
1)递归就是在过程或函数里面调用自身;
2)在使用递归时,必须有一个明确的递归结束条件,称为递归出口。递归分为两个阶段:
1)递推:把复杂的问题的求解推到比原问题简单一些的问题的求解;
2)回归:当获得最简单的情况后,逐步返回,依次得到复杂的解。
递归可以极大简化代码,可读性高,但由于递归需要系统堆栈,所以空间消耗要比非递归代码要大很多,而且,如果递归深度太大,可能系统资源会不够用。在求解斐波那契数列问题中就能充分体现,当求解超过45项就回变得非常慢。递归过程中多次重复构造已有的实例,造成资源的额外开销。
迭代:利用已有的值不断迭代出新值,相当于自下而上,分而治之。
迭代效率高,没有额外开销,但是不容易理解,不如递归好理解,编写复杂问题困难。
不同级数的复杂度
……
几何级数:
收敛级数:
调和级数:
对数级数:
对于两层循环:
for(i=0;i<n;i++) for(j=0;j<i;j++){ ...... }
复杂度为
将i和j作为横纵坐标,复杂度即可视为为矩形面积。(当i或者j的上限变化时,复杂度虽然可视为为三角形面积,但是依然是
时间概念:
例如 :全国人口普查并排序,人口总数
上表可以看出算法的不同,在处理大型问题的时候的差距明显。
- 数据结构学习笔记(绪论一)
- 小楼一阁的数据结构学习笔记(一、数据结构绪论)
- 严蔚敏数据结构学习笔记一.绪论
- 数据结构学习笔记(绪论二)
- 数据结构 (一)绪论
- 机器学习-学习笔记 绪论(一)
- 《数据结构》学习笔记--第一章 绪论
- 数据结构 第一章绪论 学习笔记
- 《数据结构》学习笔记--第一章绪论
- 《统计学习方法》学习笔记(一)绪论
- 机器学习笔记(一):绪论
- (一)数据库学习笔记 第一章 绪论
- 机器学习笔记(一)绪论
- 数据结构(C++版)第一章 绪论 学习笔记
- 数据结构学习-绪论(1)
- 数据结构学习-绪论(2)
- 数据结构学习笔记——绪论
- 数据结构学习笔记——01绪论
- leetcode-153 Find Minimum in Rotated Sorted Array
- 内存溢出之Tomcat内存配置(2)
- Java基础---IO(二)--File类、Properties类、打印流、序列流(合并流) (黑马程序员)
- Tomcat 解决乱码问题
- ViewGroup的使用
- 数据结构学习笔记(绪论一)
- html 之<label>标签
- 欢迎使用CSDN-markdown编辑器
- jquery mobile常用的data-role类型
- WIFI蹭网教程及密码破解
- PE 学习(七)第七章:资源表
- 可以管理代碼的免費工具
- openssl生成公钥私钥
- query查询&分页