复杂度问题

一.时间复杂度

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)

相关推荐
Season450几秒前
C++之模板元编程(前置知识 constexpr)
开发语言·c++
luoganttcc2 分钟前
大模型是否即将到达算法极限
算法
咩咦21 分钟前
C++学习笔记22:前置后置 ++/-- 和日期减日期
c++·学习笔记·运算符重载·日期类·前置++·后置++·日期减日期
计算机安禾25 分钟前
【c++面向对象编程】第40篇:单例模式(Singleton)的多种C++实现
开发语言·c++·单例模式
叶小鸡30 分钟前
小鸡玩算法-力扣HOT100-动态规划(上)
算法·leetcode·动态规划
LuminousCPP36 分钟前
数据结构 - 线性表第三篇:基于顺序表实现 C 语言通讯录(基础功能篇)
c语言·数据结构·经验分享·笔记·算法
_日拱一卒40 分钟前
LeetCode:114二叉树展开为链表
java·开发语言·算法
无小道1 小时前
Redis——哈希类型相关指令
redis·算法·哈希算法
凌波粒1 小时前
LeetCode--513.找树左下角的值(二叉树)
java·算法·leetcode
一个不知名程序员www1 小时前
算法学习入门---算法题DAY1
c++·算法