我想重新学习一下数据结构与算法,打好基础。
To measure is to know. 我们用算法复杂度T(n)来表示算法的效率,性能。
T(n)的取值:所有问题规模为n的问题实例中,将他们的计算成本进行总体的比较,取出最坏情况下的值。
有几点需要catch,
1. 算法执行的时间,会根据编程语言,操作系统,硬件等不断变化,因此计算机前辈们将执行的时间映射到图灵机或者RAM(Random Access Machine)模型执行的次数,这样就可以用计算次数来表示算法执行的时间了。
2. 算法分析的两个主要任务 = 正确性(不变性×单调性) + 复杂度
算法:
1. 排序
快排
归并排序
2. 搜索
二分查找
Fibonacci查找