这个笔记用于我本人的复习,所以引用了很多东西。如果被侵权了请联系我,我会删掉,谢谢。:-)
写这个笔记,根本目的是希望我能养成做有效笔记的习惯,帮助我提高学习的效率。除此之外,我还希望能借由这个渠道来锻炼我书面表达的能力(因为发现上了大学之后越来越不会写文章了,偏偏又还有一堆文章要写 :-( )以及提取信息的能力。
说实话,不知道我能坚持多久,但是我还是希望我能一直坚持下去。
今天来复习算法。
先来引入一下使用算法来进行解决一个计算问题的基本流程
算法正确性的概念:
以下还有关于算法正确性证明的一些方法:
还有一些时间、空间复杂性的概念,绪论中只是简单的引入,后面我们会经常用到,这里不多赘述。
在学习算法的时候,学习伪代码如何书写是很重要的技能。当然考试肯定会考这个,不过如果能正确规范地写出伪代码,对我们未来的编程也是大有好处的。
这位大佬的文章比较详细的记载了伪代码的一些规范写法,我们在这里简单的进行下总结。
定义变量的语句可不用写出来,但必须在注释中给出。示例如下:
赋值: x ← y+1
交换 a 和 b 的值: a <-> b幂运算 ^
取模 mod
逻辑与 and
逻辑或 or
逻辑非 not
逻辑异或 xor
(其他与C语言符号相同)
还有关于分支、循环和函数的写法
这是分支的写法
if n > 0 then
print("n 是一个比 0 大的数字")
else if n < 0 then
print("n 是一个比 0 小的数字")
else
print("n 就是 0")
这是循环的写法(1)while 用于次数未定的循环。
n ← 10
while n > 0 do
print ("n =" + n)
n ← n-1
(2)for 用于次数固定的循环。
for i ← 0 to n do
print ("hello, world!")
(3)如果想遍历某个集合:
// A是一个集合
for each i in A do
print(i "hello pseudocode")
这是函数的写法//必要情况下,附上说明函数功能以及返回值类型,格式如下
//返回值类型:功能说明
function func_name(x, y)
...
return x + y
必须说明的是,伪代码的写法并不是唯一的,有些地方可能会有细微差别,但是一些基本操作(例如赋值语句)较为规范,最好不要擅自创新。
绪论的重点内容就这些。