一、关于算法
1、什么是程序?
程序 = 数据结构 + 算法
2、什么是算法?
算法就是解决某个问题的方法和步骤。计算机算法就是用计0算机语言解决问题的方法和步骤。
3、什么是数据结构?
计算机存储数据的形式:变量,数组,结构体,栈,队列等,要选择什么数据结构存储数据取决于算法。
4、算法的五个基本特征:
① 输入:算法有≥0个输入;
② 输出:算法有≥1个输出;
③ 确定性:算法步骤应被精确定义,同样的输入只能有一种输出,没有二义性;
④ 可行性:算法的每一步都是可行的,在当前环境下可以实现;
⑤ 有穷性:算法不能没完没了的执行下去,一定有结束的时间。
5、好的算法的性质:
① 正确性:具有输入、输出和处理无歧义性,能正确反应问题的需求,能够得到正确的答案;
② 可读性:便于阅读、理解和交流;要有写注释的习惯;
③ 健壮性:能对不合法的输入数据做合适的处理,而不是产生异常和莫名其妙的结果;
④ 时间效率高和存储量低:运行时间和所需内存越低越好。
6、算法的性能分析,即算法的执行效率,取决于下列因素:
① 算法策略;
② 编译产生的代码质量;
③ 问题的输入规模;
④ 机器性能。
当然,最重要的就是算法策略。
7、算法的时间复杂度:
① 概念
算法的时间复杂度,也就是算法的时间度量,可用大O记法体现,记作T(n) = O(f(n)),其中T(n)是语句总的执行次数,n是问题规模,f(n)是n的某个函数,通过这个函数可确定算法时间复杂度的数量级。随着n的增加,T(n)增长最慢的算法为最优算法。
例如:计算1+2+...+n,用for循环叠加,时间复杂度是O(n),数量级为线性阶;用高斯公式,时间复杂度是O(1),数量级为常数阶;双层for循环,时间复杂度是O(n²),数量级为平方阶。
② 如何计算时间复杂度
(1)常数项全变为1;
(2)只保留最高阶项;
(3)去除与最高阶项相乘的常数。
如O(3n³ + 7n² + 200n + 10086),其时间复杂度就是O(n³)。
③ 各种算法时间复杂度的效率比较

8、算法的空间复杂度:
① 算法的空间复杂度(Space Complexity) S(n) 定义为该算法所耗费的存储空间,包括算法本身和输入输入以及运行过程中临时占用的存储空间。
② 通常可以牺牲空间复杂度来换取时间复杂度,比如用长数组取代变量,用查表取代CPU运算。
③ 如果不加限定的使用“复杂度”,通常指的是时间复杂度。
二、模拟算法
1、模拟算法就是我们所说的暴力算法,即用计算机语言直接模拟呈现题目的要求。通常具有代码量大、操作多、思路繁复的特点。
2、写模拟算法的建议:
① 做提前草稿纸写流程;
② 代码模块化,函数化;
③ 分块单独调试;
3、模拟算法的类型:
① 直叙式模拟:题目怎么说,代码怎么写;
② 筛选法模拟:根据约束条件筛选出正确的解;
③ 构造法模拟:构造反应问题本质的数学模型。
4、例题1



5、例题2


此处的“层”是指宫格从外到内的第几圈,如1-12是第一层,13-16是第二层。


1674

被折叠的 条评论
为什么被折叠?



