复杂度问题

一.时间复杂度

1.特点

时间复杂度:计算语句执行次数,语句执行次数中,规模最大的作为该代码的时间复杂度

2.方法

(1)终止条件

(2)找循环次数和循环变量的关系

(3)和n的关系

例如:

3.常见算法的时间复杂度

插入排序:O(n²)

​冒泡排序:O(n²)

​选择排序:O(n²)

快速排序:O(n log n)(最坏 O(n²))

归并排序:O(n log n)

堆排序:O(n log n)

二.空间复杂度

1.定义

算法除了输入数据本身外,额外开辟的空间

2. 常见

O(1):没开额外数组,只用几个变量

​ 插入、冒泡、选择排序

O(n):开了一个长度为 n 的数组

​ 归并排序、计数排序

​O(log n):递归栈(如快排)

​ O(n):递归深度 n(如坏的快排)

  1. 插入排序

时间:O(n²) 空间:O(1)

  1. 交换排序(冒泡)

时间:O(n²) 空间:O(1)

  1. 关键路径

时间:O(n + e)(n顶点,e边) 空间:O(n + e)

相关推荐
米啦啦.几秒前
C+类的友元与静态成员函数,类模板
c++·友元·类模板
超绝振刀怪6 分钟前
【C++可变模板参数】
开发语言·c++·可变模板参数
AI成长日志1 小时前
【笔面试算法学习专栏】哈希表基础:两数之和与字母异位词分组
学习·算法·面试
minji...1 小时前
Linux 线程同步与互斥(二) 线程同步,条件变量,pthread_cond_init/wait/signal/broadcast
linux·运维·开发语言·jvm·数据结构·c++
梓䈑1 小时前
高性能 C++ 日志实战:spdlog 核心架构解析与最佳实践指南
c++·架构
abant21 小时前
leetcode 239 单调队列 需要一些记忆
算法·leetcode·职场和发展
漫霂1 小时前
二叉树的统一迭代遍历
java·算法
炽烈小老头1 小时前
【每天学习一点算法 2026/04/08】阶乘后的零
学习·算法
番茄灭世神1 小时前
MCU开发常见软件BUG总结(持续更新)
c语言·stm32·单片机·嵌入式·gd32
Mr_Xuhhh1 小时前
算法刷题笔记:从滑动窗口到哈夫曼编码,我的算法进阶之路
开发语言·算法