掌握算法5大特性
(运用到程序的解释):
有穷性: 程序要可以执行完,不能进入死循环
确定性: 程序所得的结果就是这个方法定义的,不能要A得B
可行性: 程序可以通过基本运算正常执行成功,不能出现1/0违背数学的情况
有输入:有参数
有输出:有返回值
不符合上述情况的我们可以称作是程序,但不代表它是算法!
时间复杂度
首先从图中了解常用时间复杂度的一个大小:
O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n3)<O(2^n)<O(n!)
从图中很直观可以看到,
O(1) 是最小的,也就是并没有循环
O(logn) 可以了解下二分查找法(折半查找),推导数学公式,来换算成对数log ,即:
n * (½)^k = 1
n * 1/2^k = 1
n = 2^k
log2^n = k
O(n)围绕问题规模n循环一次
O(nlogn)可以了解下归