算法的时间复杂度

整理了下算法的时间复杂度,跟大家一起分享下。

时间复杂度O 是表示算法运行时间与输入数据规模(通常用 n 表示)之间的关系。算法执行时间随输入数据规模增长的变化趋势。

1、O(1) --- 常数时间

  • 无论输入数据多大,执行时间固定不变。
  • 典型场景:数组按索引访问、哈希表查询。

2、O(log n) --- 对数时间

  • 执行时间随数据量增长,但增速远慢于线性增长。
  • 典型场景:二分查找、平衡二叉搜索树操作。

3、O(n) --- 线性时间

  • 执行时间与数据量成正比。
  • 典型场景:遍历数组/链表、线性搜索。

4、O(n log n) --- 线性对数时间

  • 比线性慢,但比平方快,常见于高效排序算法。
  • 典型场景:快速排序、归并排序、堆排序。

5、O(n²) --- 平方时间

  • 执行时间与数据量的平方成正比,数据量大时性能急剧下降。
  • 典型场景:冒泡排序、选择排序、暴力搜索(如两数之和的暴力解法)。

6、O(2ⁿ) --- 指数时间

  • 执行时间呈指数级增长,仅适用于极小规模数据
  • 典型场景:暴力穷举、未优化的递归(如斐波那契数列原始递归)。

7、O(n!) --- 阶乘时间

  • 最慢的时间复杂度,通常用于全排列问题。
  • 典型场景:全排列生成。

排序从最优到最差:O(1) < O(log n) < O(n) < O(n log n) < O(n^2) < O(2^n) < O(n!)。

空间复杂度的表示与时间复杂度的表示基本一致。时间复杂度关注的是运行时间 ,空间复杂度关注的是内存消耗。

现在内存比以前便宜,大家更追求时间的优化了。

此心光明,亦复何言。-- 烟沙九洲

相关推荐
小卡车555几秒前
java反射、自定义注解的应用(自定义分页)
java
徐小黑ACG12 分钟前
Golang 基础05 结构体struct
开发语言·算法·golang
Navigator_Z40 分钟前
LeetCode //C - 1286. Iterator for Combination
c语言·算法·leetcode
BLUcoding1 小时前
接口服务公网超时排查记录:SecureRandom 阻塞问题分析与解决
java·linux·springboot·aes·securerandom
yuniko-n1 小时前
【JUC】Lock 和 synchronzied 锁
java
西柚小萌新1 小时前
【LLM&&AI应用开发 八股文】--4.3.Agent智能体(下)
java·开发语言·数据库
北极有牛1 小时前
cpp学习笔记--常量指针
java·开发语言·算法
GPU实战笔记1 小时前
云端 GPU 训练的账户余额提醒:它能说明什么,不能说明什么?
深度学习·算法·成本管理·gpu云计算·云端训练
java资料站1 小时前
二、Spring AI Alibaba · ChatModel
java·windows·spring
浮链序2 小时前
怎么证明"你这个模型是偷我的"——把蒸馏变成取证工具
算法·安全·llm