数据结构 2____概论
来源:互联网 发布:淘宝创想电玩黑店 编辑:程序博客网 时间:2024/05/17 02:41
研究数据结构的目的在于更好地进行程序设计. 程序设计离不开数据的运算, 这种运算的过程(或解题的方法) 通常称为算法.
算法是对问题求解步骤的一种描述.
严格地说, 定义: 算法是由若干条指令组成的胡穷序列, 其中每条指令表示一个或多个操作。
1. 算法的含义与程序十分相似, 但是有区别的, 程序必须依赖于计算机程序语言,而一个算法可用自然语言、计算机程序语言、数学语言或约定的符号语言来描述.
2. 怎么样评价算法的优劣, 进而从中选择好的算法呢?
算法的正确性是首先要考虑的,此外,应考虑以下3点:
(1) 执行算法所耗费的时间, 即时间的复杂性
(2) 执行算法所耗费的存储空间,主要是辅助空间,即空间复杂性
(3) 算法应易于理解, 易于编程, 易于调试等, 即可读性和可操性.
在以上3点中, 最主要的是时间复杂性. 一个算法 所耗费的时间应该是算法中每条语句的执行时间之和, 而每条语句的执行时间就是该语句的执行次数(也即频度) 也该语句执行一次所需时间的乘积.
一般情况下,算法中基本操作重复执行的次数是问题规模n 的某个函数f(n) , 算法的时间量度记为: T(n) = O(f(n)).
所谓问题规模, 指将算法所要 求解问题的输入量称为问题的规模, 用一个正整数n来表示。
3. 假如将算法中基本操作的重复执行次数看成是问题规模n 的某个函数f(n), 算法的渐近时间复杂度记作: T(n) = O (f(n)). 它表示随问题规模n的增大, 算法执行时间的增长率和 f(n) 的增长率相同,其中 f(n) 一般为算法中频度最大的语句频度.
(1) 在分析算法时,往往对算法的时间复杂度和渐近时间复杂度不予区分,而经常是将渐近时间复杂度 T(n) = O(f(n)), 简称为时间复杂度.
(2) 如果一个算法的执行时间是一个与问题规模n 无关的常数, 即使是一个较大的常数,仍为常数阶。 记作T(n) = O(1).
例如:
x = 90, y = 100; while(y > 0) { if(x>100) { x = x-5; y--; }else { x++; } }
(3) 算法的复杂度通常具有 O(1), 对数阶O(log2n), 线性阶 O(n), 线性对数阶 O(nlog2n), O(), o(), 指数阶 o(), 阶乘阶 o(n!)
- 数据结构 2____概论
- 数据结构 1____概论
- 数据结构概论
- 数据结构概论
- 数据结构--概论
- 数据结构概论
- 数据结构概论
- 数据结构概论
- 数据结构概论
- 数据结构概论
- 数据结构概论
- 数据结构-概论
- 数据结构概论
- 数据结构____树
- 数据结构 3____线性表
- 数据结构与算法____总结
- 数据结构与算法____链表
- 数据结构——概论
- [LinkerScript.7] 简单的链接器脚本命令: 区域别名 - Simple Linker Script Commands : Region Alias
- 拓扑排序
- 【FLEX4.6从浅入深,】比4.5内容增加了很多新的属性
- 深入分析Java线程中断问题
- 揭开EJB-企业级的javabean的神秘面纱,ejb到底是什么
- 数据结构 2____概论
- Java第一周:1.1
- phpExcel中文帮助手册
- uva 11988 - Broken Keyboard (a.k.a. Beiju Text)----链表快速插入
- GM(1,1)程序设计
- Java中的左移右移<<、>>、>>>
- android入门(六) UI线程阻塞及其优化
- Linux下编程获取本地IP地址的常见方法
- 夜跑记录