大O表示法是用来表示算法的性能和复杂度的,也表示算法占用cpu的情况。
通常有以下几种表示:
1、O(1)复杂度
function(i){ i++; } i = 1 和 i = 10000000耗时的差距其实是可以忽略的,不管i是多少,占用CPU的情况是不变的。这就是所谓的“常数级时间复杂度O(1)”。
2、O(log n)复杂度
就是对数级的时间复杂度,它的时间复杂度随着数组的增大而变的越来越缓慢,也就是说当处理大量数据的时候这种时间复杂度的算法是非常优秀的。
当所要查询的数字正好为中间值时即返回。
当所要查询的数字大于中间值时,下次就从后半段开始查找。
当所要查询的数组小雨中间值时,下次就从前半段开始查找。重复上述过程直到找到当前查询的值。
3、O(n)复杂度
遍历数组每个成员与目标值进行比较,如果数组长度为1 那么就比较1次 假设比较一次的耗时为2ms,那如果数组长度为1000000,那么最差的情况就是要比较一百万次才会出现结果,那么耗时就是 1000000 * 2ms,这种随着数组长度的而增加占用cpu比例的增长即为O(n)复杂度。
4、O(n²)复杂度
这种平方级别的复杂度,还是尽量要避免,因为速度实在是太慢了。典型算法就是冒泡排序。
冒泡排序特征就是2层for循环,当数组长度为10时,CPU的占用就为100,那要当数组长度为100呢 1000呢 10000呢。。。
当数组长度多了100倍,计算时间却要多出几千倍。这个就不测了。。。。。感觉没啥必要。
网友评论