时间复杂度分析
什么是时间复杂度
O(n)中的O用来表示上界,表示最坏的运行时间上界
特殊的快排
快排的最坏时间复杂度应该是O(n2),但我们依然说快速排序的时间复杂度是O(nlogn),这就是业内的一个默认规定。
如何描述时间复杂度
O(logn)中的log以什么为底
我们统一说的logn,是忽略对底数的描述的,底数是任意的都行,影响不大
递归算法的时间复杂度的分析
递归算法的时间复杂度本质要看递归的次数与每次递归中的操作次数的乘积,递归的次数是重中之重
程序的运行时间
超时是怎么回事
顾名思义是指程序的运行时间超过了规定的时间
编程语言的内存管理
不同的编程语言有各自的内存管理方式
语法 | 方式 |
---|---|
C++ | 内存堆空间的申请和释放完全靠自己管理 |
Java | 依赖JVM实现内存管理 |
python | 通过私有堆空间管理内存、只有解释器才能操作 |
C++的内存管理
空间复杂度
空间复杂度仅仅是预先大致评估程序内存使用的大小
递归算法的空间复杂度分析
还是二叉树分析法