好的算法应该具有:
- 正确性
- 可读性
- 健壮性(对于非法数据进行处理)
4. 效率与存储量
一、算法效率的度量
- 语句频度:该条语句可能重复执行的次数
- T(n):所有语句的频度之和,其中n为问题的规模
![图片](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mLzc0ZDdCdzluZVZwVENrT3cucG5nIXRodW1ibmFpbA?x-oss-process=image/format,png)
- 时间复杂度T(n)=O((f(n)),其中O表示T(n)与f(n)在n->正无穷时为同阶无穷大.
二、时间复杂度
![图片](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL2VQMjdGZ3p4S2F1NFNWM3cucG5nIXRodW1ibmFpbA?x-oss-process=image/format,png)
![图片](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mL0hxWmpjUW1oME43YzAwbUcucG5nIXRodW1ibmFpbA?x-oss-process=image/format,png)
上图这个例子:
- int sum = 0 的语句频度为1
- 第一个循环的语句频度为n
- 第二个循环的语句频度为n^2
∴ T(n) = n^2 + n + 1
根据加法规则:O(n^2)
![图片](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWRlci5zaGltby5pbS9mLzYyTDhUMkVrS1VlZmR6ME8ucG5nIXRodW1ibmFpbA?x-oss-process=image/format,png)
三、空间复杂度
空间复杂度算法消耗的存储空间,记s(n)=O(g(n))