时间复杂度是计算机科学中的一个概念,它涉及一组代码或算法处理或运行所需时间的量化,是输入量的函数。换句话说,时间复杂度是指一个程序处理一个给定的输入需要多长时间。一个算法的效率取决于两个参数:

  • 时间复杂度:它被定义为一个特定指令集的执行次数,而不是所花的总时间。这是因为总时间也取决于一些外部因素,如使用的编译器、处理器的速度等。
  • 空间复杂度:它是程序执行所需的总内存空间。

不同数据结构在不同操作中的最佳时间复杂性

数据结构 访问 搜索 插入 删除
阵列 O(1) O(1) O(1) O(1)
堆栈 O(1) O(1) O(1) O(1)
队列 O(1) O(1) O(1) O(1)
单链表 O(1) O(1) O(1) O(1)
双链表 O(1) O(1) O(1) O(1)
哈希表 O(1) O(1) O(1) O(1)
二进制搜索树 O(log n) O(log n) O(log n) O(log n)
AVL树 O(log n) O(log n) O(log n) O(log n)
B树 O(log n) O(log n) O(log n) O(log n)
红黑树 O(log n) O(log n) O(log n) O(log n)

不同数据结构对不同操作的最坏情况下的时间复杂度

数据结构 访问 搜索 插入 删除
阵列 O(1) O(N) O(N) O(N)
堆栈 O(N) O(N) O(1) O(1)
队列 O(N) O(N) O(1) O(1)
单链表 O(N) O(N) O(N) O(N)
双链表 O(N) O(N) O(1) O(1)
哈希表 O(N) O(N) O(N) O(N)
二进制搜索树 O(N) O(N) O(N) O(N)
AVL树 O(log N) O(log N) O(log N) O(log N)
二进制树 O(N) O(N) O(N) O(N)
红黑树 O(log N) O(log N) O(log N) O(log N)

不同数据结构对不同操作的平均时间复杂度

数据结构 访问 搜索 插入 删除
阵列 O(1) O(N) O(N) O(N)
堆栈 O(N) O(N) O(1) O(1)
队列 O(N) O(N) O(1) O(1)
单链表 O(N) O(N) O(1) O(1)
双链表 O(N) O(N) O(1) O(1)
哈希表 O(1) O(1) O(1) O(1)
二进制搜索树 O(log N) O(log N) O(log N) O(log N)
AVL树 O(log N) O(log N) O(log N) O(log N)
B树 O(log N) O(log N) O(log N) O(log N)
红黑树 O(log N) O(log N) O(log N) O(log N)