3.数据结构
### 3.1 时间复杂度和空间复杂度
#### 3.1.1 时间复杂度
频度:算法时间复杂度中基本操作重复执行的次数
时间复杂度:**大致计算出相应的数量级**
**时间复杂度的比较(必须记住):**
**O(1)<O(log2^n)<O(n)<O(nlog2^n)<O(n^2)<O(n^3)<O(2^n)<O(n!)<O(n^n)**
**加法规则:取最高阶项,并将系数化1**
**乘法规则:多项相乘得到最高阶项,保留最高阶项,将系数化1**
**加法乘法混合规则:先去小括号内的最高阶项,然后在乘法规则(得到最高阶项)再进行加法规则**
**问题涉及递归思想时需考虑时间复杂度**
时间复杂度运算:
**声明变量以及变量的赋值 时间复杂度为O(1)**
**一个while循环的时间复杂度 O(log2^n)**
**一个for循环的时间复杂度 O(n)**
以此类推while和for的嵌套循环时间复杂度
**for循环包含while循环-------------->执行一次for循环时,while循环就要执行n次**
**相对应的for循环时间复杂度O(n)** **while循环时间复杂度O(log2^n)**
**按照乘法规则:T=n*log2^n=nlog2^n 因此时间复杂度为O(nlog2^n)线性对数阶**
#### 3.1.2 空间复杂度
遍历二维数组形成的矩阵 该矩阵的空间复杂度为O(n^2)
**空间复杂度对于时间复杂度而言较简单 只有O(1) O(n) O(n^2)**
#### 3.1.3 时间复杂度和空间复杂度历年真题
该题考察的是如何运算整型数组中升序排序算法的时间复杂度和空间复杂度:整形数组A中要对数组中的-1,0,1进行排序 使得1~n1的数为-1,n1+1~n1+n2的数为0,n1+n2+1~n3的数为1 理解题意后根据所学知识编写出相应的数组的代码 最后运算出该排序算法的时间复杂度和空间复杂度
该题考察的是如何运算整型数组中升序排序算法的时间复杂度和空间复杂度:一个while循环的时间复杂度为O(n)
该题中的两个while循环并不形成嵌套,因此按加法法则运算时间复杂度为O(n)