在刷面试题中的算法题经常出现时间复杂度O(n),空间复杂度O(1)很多时候不知道是什么意思
空间复杂度与时间复杂度是数据结构的复杂度,在现在储存设备越来越便宜的时代,时间复杂度是决定程序运行速度的重要因素
算法时间复杂度是衡量计算性能的指标,反映了程序执行时间随着输入规模的增长而增长的量级,很大程度的反映出算法性能的好坏,这个量级用大写的O加()表示
从好到坏常用算法复杂度排序如下
O(1):常数级
最低复杂程度,使用时间或使用空间与输入数据大小没有关系,无论输入数据多大,使用时间或使用空间不变
哈希算法就是典型的常熟级算法
O(log n):对数级
使用时间或空间随着输入数据增大,复杂度增大为log n倍,log n倍是n为2的几次方的上标值
二分查找就是对数级算法
O(n):线性级
输入数据增大几倍,时间或空间增大几倍
大部分遍历就是线性级算法
O(nlog n):线性对数级
使用时间或空间随着输入数据增大,复杂度增大为nlog n倍,nlog n倍是n为2的几次方的上标值乘以n
二分查找就是对数级算法
O(n²):平方级
输入数据增大几倍,时间或空间增大几的平方倍
冒泡排序就是平方级算法,不过复杂度是从O(n)->O(n²),冒泡排序在数据错位数量很小时适用
O(n³):立方级
输入数据增大几倍,时间或空间增大几的立方倍
O(2ⁿ):指数级
输入数据增大几倍,时间或空间增大2的几的次方倍