数据:信息的载体,能够被计算机识别、存储、加工、处理。
数据元素:数据的基本单位,数据元素可由若干个数据项构成。
数据对象:数据的子集,具有相同性质的数据元素的集合。
数据结构:由数据元素和结构(元素之间的相互关系)组成。 $$ Data_Stryctrues = (D, S) $$
逻辑结构:集合、线性结构、树形结构(非线性)、图形结构(非线性)。
关系:<$a_i, a_j$> 或 ($a_i, a_j$) ------前驱或弧尾<=>后续或弧头
注:输入可以为空,但没有输出的算法是毫无意义的。
算法所消耗的时间:算法中所有语句执行时间(语句的频度--语句重复执行的次数)之和
时间复杂度 $$ T(n):2n^3+3n^2+2n+1 $$
渐进时间复杂度 $$ O(n^3) $$
注:都是求最坏情况下的原操作句执行次数,平均情况也是一种不错的衡量假设
$$ O(c) < O(\log_2n) < O(n) < O(n\log_2n) < O(n^2) < O(2^n) < O(n!) <O(n^3)<O(n^n) $$
算法的时间复杂度不仅是问题规模 n 的函数,还与所处理的数据集有关,所以我们需全面考虑它在最坏情况、最好情况、平均情况下的代价
辅助变量所占空间是我们经常需要考虑的
注:时间复杂度与空间复杂度我们更倾向于考虑时间复杂度,现在的内存没有几十年前珍贵,但时间能带给用户更好的体验,这是其中一个原因,当然,具体情况具体分析