有计划写一个自己的算法库,也就是先自己将用c语言实现,再用c++实现
写出一个可以工作的程序并不够。如果这个程序在巨大的数据集上运行,那么运行时间就变成重要的问题。
- 如何估计程序运行时间
- 如果选择算法
- 改进算法性能,优化代码
递归
- 基准情形——不能递归就能求解的情形
- 不断推进——需要递归求解的情形,递归调用必须总能够朝着产生基准情形的方向推进
- 设计法则——假设所有的递归调用都能运行
- 合成效益法则——切勿在不同的递归调用中做重复的工作。如斐波那契数
- 如何估计程序运行时间
- 如何将一个程序的运行时间从天或年降低到秒
- 粗心使用递归的后果
- 将一个数自乘得到其幂,计算两个数最大公因数的非常有效的算法
一些简单的定义
当我们说T(N)=O(f(N)),我们在保证T(N)不快于f(N)的速度增长,因此其为一个上界。f(N)=omg(T(N)),T(N)为其下界。
增长速度相等用一个怪怪的符号ϴ,能用这个符号优先用,严谨
如若不明白看数据结构与算法描述——c语言描述
增长速率
c