算法就是定义良好的计算过程,它取一个或一组值作为输入,并产生出一个或一组值作为输出;简单来讲,算法就是一系列步骤,用来将输入数据转换成输出的结果
算法是求解某个问题的长度有限的指令序列,每条指令都是确定的、简单的、机械的、可执行的
- 计算机系统的结构
- 内存访问
- 读写操作
具体问题求解时可以使用迭代算法或收敛算法
- 时间复杂度
- 空间复杂度
- 正确性
- 可读性
- 健壮性
时间复杂性将归结为某些基本操作的次数问题,基本操作的次数与问题的规模有关
- 哥德尔(Godel)的递归函数
- 丘齐(Church)的伽马演算
- 波斯特(Post)的波斯特机
- 图灵(Turing)的图灵机
- RAM模型
一般采用单处理器、随机存取RAM计算模型
- 循环不变式:初始化、保持、终止
- 增量法:如果A[0..i-1]已经完成,如何扩展到A[0..i],最终扩展到A[1..n]
一个算法的最坏情况运行时间是在任何输入下运行时间的一个上界
- 最坏情况和平均情况
- 多层for循环每一层时间相乘即可
- 当输入规模足够大时,算法增长量级,忽略常系数和低阶项
- 在输入规模较小时,由于常数项和低次项的影响,不可忽略