首先要明确算法的特性(连这些特性都没用就不用测评了)
1.要有输入输出
2.有穷性(有限的执行步骤内完成)
3.确定性(代码执行的结果唯一)
4.可执行性
接下来就是衡量算法的一些标准
1.正确性(代码可运行、不报错)
2.可读性(该有的注释要有的)
3.健壮性(例:输入错误要有相应的提示)
4.时间复杂度和空间复杂度。
时间复杂度:大O表示法,(大O表示法计算的是最坏的情况的时间复杂度,当大O表示法相同时可计算平均情况的时间复杂度)
空间复杂度: 程序空间计算因素:
1. 寄存本身的指令
2. 常数
3. 变量
4. 输入
5. 对数据进行操作的辅助空间
在考量算法的空间复杂度,主要考虑算法执行时所需要的辅助空间(大O表示法)
注:
大O表示法
1. 用常数1取代运行时间中所有常数 3->1 O(1)
2. 在修改运行次数函数中,只保留最高阶项 n^3+2n^2+5 -> O(n^3)
3. 如果在最高阶存在且不等于1,则去除这个项目相乘的常数 2n^3 -> n^3
复杂度排序:O(1) < O(log n) < O(n) < O(nlog n) < O(n2) < O(n3) < O(2n) < O(n!) < O(nn)
网友评论