目录
1.算法的5个必备特性
2.算法设计的四个要求
正确性correctness:对于刻意选择的刁钻数据也能输出正确的结果
可读性readability:算法的交流对象是人。写出的算法越通俗易懂,代表能力越强
鲁棒性robustness:对于非法的输入,能合理的返回“错误”或跳出,而不是输出类似乱码的结果
高效性efficiency:输出越快越好,执行时占用内存越小越好
对于效率,只考虑语句频度,忽略每条指令的执行时间(因计算机而异)
3.时间复杂度及基本分析方法
计算时间复杂度时,有时候与输入有关。如,在输入集中查找某元素,则存在一开始就找到和在最后才找到的区别。那么我们一般考虑最坏的情况,以保证算法的运行时间不会比预期更长。
计算的基本方法:
*可以直接找循环嵌套最深的分析
例:
*可直接记为O(logn),不考虑底数
当O(n)难以直接表示时,可以使用分解规则,做加法或乘法:
4.空间复杂度
例: 颠倒一维数组的顺序
算法1中,将第一个和最后一个互换,第二个和倒数第二个互换。共需要一个额外的空间
算法2中,新建一个数组b,将原数组a中的元素逆序放入。共需要n个额外的空间(n为元素数量)