复杂度问题

一.时间复杂度

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)

相关推荐
不正经学生1 小时前
C语言预处理详解:编译器真正动手之前的那些事
c语言·开发语言·算法·面试·bug
门思科技2 小时前
LoRaWAN 设备类别:Class A、B、C 对比与选型指南
c语言·开发语言·php
毕竟是shy哥4 小时前
计算YOLO数据集中每个类的目标数
算法·yolo·机器学习
M78佐菲4 小时前
Linux学习笔记:TCP协议
linux·笔记·学习·tcp/ip·算法
恋恋西风4 小时前
C++ 理解 std::thread 在单核和多核上的行为差异
开发语言·c++
Brilliantwxx4 小时前
【Linux】 进程(9)程序与进程地址空间(基础+进阶+面试题)
linux·运维·服务器·开发语言·c++
BizzZ_5 小时前
C++(22)——类型转换和IO流
开发语言·c++
晊晌_h5 小时前
嵌入式从0到精通——数据结构总结[特殊字符]
数据结构·算法·排序算法
xiaobobo33305 小时前
c语言中for循环条件中定义临时栈变量的作用域
c语言·for循环条件定义栈变量·大括号作用域·独立栈变量
我找到地球的支点啦6 小时前
Matlab系列(009) 一CRC循环冗余校验详解
开发语言·数据结构·算法·matlab·信息与通信