时间复杂度为计算机科学的概念,由一组代码或算法采取的过程或运行作为输入量的函数的时间量的量化交易。换句话说,时间复杂度是程序处理给定输入所花费的时间。算法的效率取决于两个参数:
- 时间复杂度
- 空间复杂度
时间复杂度:定义为执行特定指令集的次数而不是总时间。这是因为所花费的总时间还取决于一些外部因素,例如所使用的编译器,处理器的速度等。
空间复杂度:它是程序执行所需的总存储空间。
不同操作的不同数据结构的平均时间复杂度
Data structure | Access | Search | Insertion | Deletion |
Array | O(1) | O(N) | O(N) | O(N) |
Stack | O(N) | O(N) | O(1) | O(1) |
Queue | O(N) | O(N) | O(1) | O(1) |
Singly Linked list | O(N) | O(N) | O(1) | O(1) |
Doubly Linked List | O(N) | O(N) | O(1) | O(1) |
Hash Table | O(1) | O(1) | O(1) | O(1) |
Binary Search Tree | O(log N) | O(log N) | O(log N) | O(log N) |
AVL Tree | O(log N) | O(log N) | O(log N) | O(log N) |
B Tree | O(log N) | O(log N) | O(log N) | O(log N) |
Red Black Tree | O(log N) | O(log N) | O(log N) | O(log N) |
不同操作的不同数据结构的最坏情况时间复杂度
Data structure | Access | Search | Insertion | Deletion |
Array | O(1) | O(N) | O(N) | O(N) |
Stack | O(N) | O(N) | O(1) | O(1) |
Queue | O(N) | O(N) | O(1) | O(1) |
Singly Linked list | O(N) | O(N) | O(1) | O(1) |
Doubly Linked List | O(N) | O(N) | O(1) | O(1) |
Hash Table | O(N) | O(N) | O(N) | O(N) |
Binary Search Tree | O(N) | O(N) | O(N) | O(N) |
AVL Tree | O(log N) | O(log N) | O(log N) | O(log N) |
Binary Tree | O(N) | O(N) | O(N) | O(N) |
Red Black Tree | O(log N) | O(log N) | O(log N) | O(log N) |