现在是2022年4月16日11点33分,还没吃午饭,我又emo了,望着王道数据结构长长的进度条,是不是来不及了。说实话,看视频是容易理解,但是视频也太长了吧…倍速又感觉怪怪的。但是看文档多快啊,可是网上的资料质量参差不齐,往往要点击较多的链接才能得到我们想要的答案,要于是萌发了写作此文的想法,也算是笔记,便于自己以后复习使用,当然不会面面俱到,主要是记录笔者认为重要的知识点。
warning:本文不是基于408的考试大纲,而是基于某211的考试大纲。
废话不多说,开始吧!
C程序的特点,首先应该了解的是C语言是一种过程性语言。
然后总结谭浩强第4版的内容,C语言有如下特点:
算法性能的度量是通过时间复杂度和空间复杂度。
这里默认大家都学习什么是时间复杂度和空间复杂度。
常见的时间复杂度有,从快到慢的排序为:
复杂度 | 名称 |
---|---|
O(1) | 常数复杂度 |
O(logn) | 对数复杂度 |
O(n) | 线性复杂度 |
O(nlogn) | 线性对数复杂度 |
O(n2) | 平方复杂度 |
O(n3) | 立方复杂度 |
O(2n) | 指数复杂度 |
O(n!) | 阶乘复杂度 |
笔者以前在PTA上做过一道非常好的题目:
到了现在普遍内存空间过剩的情况下,空间复杂度似乎不是那么重要了。
如果输入值与程序占用的空间无关,空间复杂度就是0(1),如果呈线性关系,那么就是O(n),如果是n2的关系增长,那么就是O(n2)。
根据谭浩强第四版,广义的算法:为了解决一个问题而使用的方法和步骤。我们这里主要讲述计算机算法。计算机算法分为数值运算算法和非数值运算算法。
不过不是随便写一些语句就是算法,算法具有以下特性:
可以用自然语言、流程图和伪代码表示。
考手画流程图感觉不现实~
自然语言能描述清楚估计就行了,不过以防万一,大家还是稍微了解一下。
平行四边形是输入输出、菱形是判断、长方形是一般的步骤。
谭浩强还提到了N-S流程图:
为了得到结构化的程序,我们需要使用这些方法:
… 后续会继续更新