大话数据结构——算法
2016-05-10 21:36
309 查看
算法:算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。
为什么把数据结构和算法一起说?
想想罗密欧与朱丽叶,梁山伯和祝英台,少了一个你总会觉得奇怪吧。
算法的五个基本特性:
输入:有0个或多个输入;
输出:有1个或多个输出;
有穷性:步骤有限,不能无穷循环下去;
确定性:有确定的含义,不能出现二义性;
可行性:每一步都能通过有限次数完成。
算法设计的要求:
正确性:能正确反映问题,得到问题的正确答案;
可读性:便于阅读、理解和交流;
健壮性:即使输入不合法,算法也能处理,而不是出现异常或中止;
时间效率高和存储量低:像生活中人们所希望的花最少时间,办最大的事。
算法效率的度量方法:
事后统计法:利用测试好的程序和数据,用计算机测试运行时间判断算法的优劣。这种方法有很大缺陷,必须事先设计好程序,风险大;时间很可能依赖于计算机硬件配置;算法测试的数据选择困难,如数据量大小会影响运行时间。
事前分析估算法:在程序编制前,进行估算。取决于以下因素:算法采用的策略、方法(算法好坏的根本);编译产生的代码质量(软件);问题的输入规模;机器指令执行的速度(硬件条件)。
算法时间复杂度推导方法:
用行数1取代运行时间中的所有加法常数;例如,f(n)=1,f(n)=5等的时间复杂度都是O(1),也称为常数街;
在修改后的运行次数函数中,只保留最高阶的项;
如果最高阶存在且不是1,则去除与这个项相乘的常数。
得到的结果就是大O阶。
为什么把数据结构和算法一起说?
想想罗密欧与朱丽叶,梁山伯和祝英台,少了一个你总会觉得奇怪吧。
算法的五个基本特性:
输入:有0个或多个输入;
输出:有1个或多个输出;
有穷性:步骤有限,不能无穷循环下去;
确定性:有确定的含义,不能出现二义性;
可行性:每一步都能通过有限次数完成。
算法设计的要求:
正确性:能正确反映问题,得到问题的正确答案;
可读性:便于阅读、理解和交流;
健壮性:即使输入不合法,算法也能处理,而不是出现异常或中止;
时间效率高和存储量低:像生活中人们所希望的花最少时间,办最大的事。
算法效率的度量方法:
事后统计法:利用测试好的程序和数据,用计算机测试运行时间判断算法的优劣。这种方法有很大缺陷,必须事先设计好程序,风险大;时间很可能依赖于计算机硬件配置;算法测试的数据选择困难,如数据量大小会影响运行时间。
事前分析估算法:在程序编制前,进行估算。取决于以下因素:算法采用的策略、方法(算法好坏的根本);编译产生的代码质量(软件);问题的输入规模;机器指令执行的速度(硬件条件)。
算法时间复杂度推导方法:
用行数1取代运行时间中的所有加法常数;例如,f(n)=1,f(n)=5等的时间复杂度都是O(1),也称为常数街;
在修改后的运行次数函数中,只保留最高阶的项;
如果最高阶存在且不是1,则去除与这个项相乘的常数。
得到的结果就是大O阶。
相关文章推荐
- 编程之久,除了算法和数据结构什么也不属于我们
- 团队项目——地铁信息查询数据结构设计
- 数据结构二叉树的遍历(二)
- 数据结构算法及应用——二叉树
- 数据结构二叉树的查找与遍历
- 数据结构_队列-循环队列实现模拟舞伴配对问题
- 数据结构--单链表
- 大话数据结构——数据结构绪论
- 数据结构实验之链表一:顺序建立链表
- 数据结构与算法练习-Linked List/链表
- 数据结构与算法练习-Number/数字
- 数据结构-二叉树(binary tree)-二叉查找树(binary search tree)
- 数据结构(13):串的存储结构
- Linux 内核里的数据结构——双向链表
- 数据结构中二叉树的的存储、遍历、交换子树、统计二叉树的深度
- 兰州大学数据结构课程设计实验七:文本文件单词的检索及计数
- 数据结构-树(tree)
- java 集合框架-利用LinkedList实现堆栈数据结构
- 数据结构 AVL树
- poj3250+单调栈,换种数据结构和思维解决问题