读书笔记-《大话数据结构》第二章算法
2016-08-04 13:12
197 查看
2.3两种算法的比较
算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。
2.5算法的特性
输入输出:零个或多个输入,至少一个或多个输出。
有穷性:有限的步骤,每个步骤在可接受的时间内完成
确定性:每一步都有确定的含义,没有二义性
可行性:每一步都必须可行,执行有限次数完成
2.6算法的设计
正确性
可读性
健壮性
时间效率高和存储量低
2.7算法效率的度量方法
2.7.1事后统计方法:通过写好的测试程序和数据,利用计算机对不同算法比较,然后确定效率
缺点:必须事先把程序写好,时间的快慢依赖计算机,算法测试数据设计困难
2.7.2事前分析估计方法 :编程前对程序进行估计
缺点:依赖算法的好坏
2.10常见的时间复杂度
O(1): 表示算法的运行时间为常量
O(n): 表示该算法是线性算法
O(㏒2n): 二分查找算法
O(n2): 对数组进行排序的各种简单算法,例如直接插入排序的算法。
O(n3): 做两个n阶矩阵的乘法运算
O(2n): 求具有n个元素集合的所有子集的算法
O(n!): 求具有N个元素的全排列的算法
优<---------------------------<劣
O(1)2n)<O(n)<O(n2)<O(2n)
排序法
#include <iostream> #if 0 //需要运行 100次 int main() { int i,sum=0,n=100; for(i=1;i<=n;i++) { sum=sum+i; } std::cout << sum; return 0; } #endif #if 1 int main() { //运行一次 int sum=0,n=100; sum=(1+n)*n/2; std::cout << sum; } #endif //显然 第二个算法更优秀 //算法:解决特定问题求解的描述, 在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作2.4算法定义
算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。
2.5算法的特性
输入输出:零个或多个输入,至少一个或多个输出。
有穷性:有限的步骤,每个步骤在可接受的时间内完成
确定性:每一步都有确定的含义,没有二义性
可行性:每一步都必须可行,执行有限次数完成
2.6算法的设计
正确性
可读性
健壮性
时间效率高和存储量低
2.7算法效率的度量方法
2.7.1事后统计方法:通过写好的测试程序和数据,利用计算机对不同算法比较,然后确定效率
缺点:必须事先把程序写好,时间的快慢依赖计算机,算法测试数据设计困难
2.7.2事前分析估计方法 :编程前对程序进行估计
缺点:依赖算法的好坏
2.10常见的时间复杂度
O(1): 表示算法的运行时间为常量
O(n): 表示该算法是线性算法
O(㏒2n): 二分查找算法
O(n2): 对数组进行排序的各种简单算法,例如直接插入排序的算法。
O(n3): 做两个n阶矩阵的乘法运算
O(2n): 求具有n个元素集合的所有子集的算法
O(n!): 求具有N个元素的全排列的算法
优<---------------------------<劣
O(1)2n)<O(n)<O(n2)<O(2n)
排序法
最差时间分析 | 平均时间复杂度 | 稳定度 | 空间复杂度 | |
冒泡排序 | O(n2) | O(n2) | 稳定 | O(1) |
快速排序 | O(n2) | O(n*log2n) | 不稳定 | O(log2n)~O(n) |
选择排序 | O(n2) | O(n2) | 稳定 | O(1) |
二叉树排序 | O(n2) | O(n*log2n) | 不一顶 | O(n) |
插入排序 | O(n2) | O(n2) | 稳定 | O(1) |
堆排序 | O(n*log2n) | O(n*log2n) | 不稳定 | O(1) |
希尔排序 | O | O | 不稳定 | O(1) |
相关文章推荐
- 《大话数据结构》读书笔记 第二章 算法 函数的渐近增长
- 《大话数据结构》读书笔记 第二章 算法
- 大话数据结构 第二章 算法(读书笔记)
- 啊哈!算法读书笔记 | 第二章 栈、队列、链表
- 大话数据结构--第二章 算法
- 【编程珠玑】读书笔记 第二章 算法
- [读书笔记]-大话数据结构-2-算法
- 《大话数据结构》读书笔记之冒泡排序和源码及优化算法源码
- 读书笔记-->第二张 算法 -->《大话数据结构》
- 《大话数据结构》读书笔记系列(二)---- 算法
- 【转】读书笔记:“集体智慧编程”之第二章:推荐算法——协同滤波
- 《大话数据结构》读书笔记(一)——数据结构基础和算法
- 算法导论第二章_合并算法_读书笔记
- 第2章 算法1---《大话数据结构》读书笔记
- 数据结构与算法(C语言) 第二章 算法分析 读书笔记
- 编程珠玑第二章读书笔记 第二章 Aha!算法 (手摇法)
- 机器学习实战第二章——学习KNN算法,读书笔记
- 《算法导论》读书笔记--第二章 2.2 分析算法
- 大话数据结构第二章——算法
- 【大话数据结构】第二章 算法