2026/4/17 19:30:08
网站建设
项目流程
阿里云 建设网站怎么样,微营销推广软件,汉川市建设局网站,做一个赚钱的网站好大O表示法具体含义总结表时间复杂度详解大O表示名称含义示例增长曲线执行时间(n1000)假设O(1)常数时间执行时间不随输入规模变化数组索引访问、哈希表查找水平线1单位时间O(log n)对数时间执行时间随输入规模对数增长二分查找、平衡树操作缓慢上升曲线10单位时间O(√n)平方根时…大O表示法具体含义总结表时间复杂度详解大O表示名称含义示例增长曲线执行时间(n1000)假设O(1)常数时间执行时间不随输入规模变化数组索引访问、哈希表查找水平线1单位时间O(log n)对数时间执行时间随输入规模对数增长二分查找、平衡树操作缓慢上升曲线10单位时间O(√n)平方根时间执行时间随输入规模的平方根增长某些数论算法、质数检查平缓上升31.6单位时间O(n)线性时间执行时间与输入规模成正比数组遍历、线性搜索45°直线1000单位时间O(n log n)线性对数时间执行时间 n × log n高效排序算法(快速排序、归并排序)略高于线性10000单位时间O(n²)二次时间执行时间与输入规模的平方成正比简单排序(冒泡、选择)、嵌套循环快速上升曲线1,000,000单位时间O(n³)立方时间执行时间与输入规模的立方成正比三重嵌套循环、某些矩阵运算急剧上升1,000,000,000单位时间O(2ⁿ)指数时间执行时间呈指数增长暴力破解、汉诺塔递归急剧爆炸增长1.07×10³⁰¹单位时间O(n!)阶乘时间执行时间呈阶乘增长旅行商问题暴力解、全排列极端爆炸增长4×10²⁵⁶⁷单位时间复杂度等级对比表复杂度n10n100n1000n10000实用性O(1)1111优秀O(log n)3.36.61013.3优秀O(√n)3.21031.6100良好O(n)10100100010000良好O(n log n)336649966132877可接受O(n²)1001000010⁶10⁸小型数据可用O(n³)100010⁶10⁹10¹²仅限极小数据O(2ⁿ)10241.27×10³⁰巨大天文数字不可用O(n!)36288009.33×10¹⁵⁷巨大天文数字完全不可用空间复杂度详解大O表示名称含义示例O(1)常数空间算法使用固定大小的额外空间原地排序、简单变量O(log n)对数空间额外空间随输入规模对数增长递归算法的调用栈(如快速排序)O(n)线性空间额外空间与输入规模成正比创建新数组、哈希表存储O(n log n)线性对数空间额外空间 n × log n某些递归算法O(n²)二次空间额外空间与输入规模的平方成正比创建二维数组、邻接矩阵常见算法的具体数值含义排序算法示例// O(n²): 冒泡排序 for (let i 0; i n; i) { // n次 for (let j 0; j n - i - 1; j) { // 平均n/2次 // 比较操作: 总共 ≈ n²/2 次 } } // 实际执行次数: 约 0.5n² 次比较 // O(n log n): 快速排序 // 每次递归将数组分成两半: log n 层 // 每层处理所有元素: n 次操作 // 总操作: n × log n搜索算法示例// O(log n): 二分查找 // 每次将搜索范围减半 // 查找次数 log₂n // 例如: n1024 → 最多10次查找 // n100万 → 最多20次查找 // O(n): 线性查找 // 最坏情况: 查找整个数组 // 查找次数 n实际性能参考表操作数量级可接受算法复杂度1GHz CPU处理时间估计n ≤ 100O(n³), O(2ⁿ) (小规模) 1秒100 n ≤ 10,000O(n²)1秒 - 几分钟10,000 n ≤ 1,000,000O(n log n)几秒 - 几分钟n 1,000,000O(n), O(log n), O(1)几秒 - 几分钟n 10⁹O(log n), O(1)实时或近实时重要注意事项大O表示法忽略常数因子: O(100n) 仍写作 O(n)关注最坏情况: 大O通常表示最坏情况复杂度实际性能受多种因素影响:硬件性能编程语言效率算法具体实现输入数据的特性复杂度对比的实际意义:O(n) 比 O(n log n) 好10倍以上时n通常 1000O(log n) 在大数据时优势明显常数因子在n较小时可能起决定性作用选择算法的指导原则n 10: 简单算法即可复杂度不重要10 n 1000: 避免O(n³)和更差的算法1000 n 10⁶: 优先选择O(n log n)或更好的算法n 10⁶: 必须使用O(n)或更优算法记住大O表示法帮助我们理解算法随数据规模增长的趋势但在实际开发中需要结合具体场景和性能测试来选择最合适的算法。JavaScript 常见算法复杂度总结大O表示法以下是JavaScript中常见算法的时间与空间复杂度总结时间复杂度表算法类型最佳情况平均情况最坏情况常见示例常数时间O(1)O(1)O(1)数组索引访问、对象属性访问对数时间O(1)O(log n)O(log n)二分查找、平衡二叉搜索树操作线性时间O(n)O(n)O(n)数组遍历、线性搜索线性对数时间O(n)O(n log n)O(n log n)快速排序、归并排序、堆排序二次时间O(n)O(n²)O(n²)冒泡排序、选择排序、插入排序指数时间O(1)O(2ⁿ)O(2ⁿ)汉诺塔、斐波那契递归解法阶乘时间O(1)O(n!)O(n!)旅行商问题暴力解法空间复杂度表算法类型空间复杂度描述原地算法O(1)不使用额外空间或使用常量空间线性空间O(n)额外空间与输入大小成正比递归算法O(n)递归调用栈的空间消耗JavaScript常见算法具体分析1. 搜索算法算法时间复杂度空间复杂度说明线性搜索O(n)O(1)遍历数组查找元素二分搜索O(log n)O(1)要求数组已排序深度优先搜索(DFS)O(VE)O(V)图/树遍历V为顶点数E为边数广度优先搜索(BFS)O(VE)O(V)图/树遍历2. 排序算法算法最佳平均最坏空间稳定性冒泡排序O(n)O(n²)O(n²)O(1)稳定选择排序O(n²)O(n²)O(n²)O(1)不稳定插入排序O(n)O(n²)O(n²)O(1)稳定归并排序O(n log n)O(n log n)O(n log n)O(n)稳定快速排序O(n log n)O(n log n)O(n²)O(log n)不稳定堆排序O(n log n)O(n log n)O(n log n)O(1)不稳定3. 数据结构操作数据结构访问搜索插入删除空间复杂度数组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(1)O(1)O(n)哈希表O(1)*O(1)*O(1)*O(1)*O(n)二叉搜索树O(log n)*O(log n)*O(log n)*O(log n)*O(n)注带号表示平均情况最坏情况可能退化*实际应用建议小数据集(n 100)简单算法(如冒泡排序)可能更合适中型数据集(n 10,000)使用O(n log n)算法如快速排序大型数据集(n 10,000)优先考虑O(n log n)或O(n)算法内存敏感场景选择原地算法(空间复杂度O(1))需要稳定排序选择归并排序或插入排序JavaScript内置方法复杂度方法时间复杂度说明Array.prototype.push/popO(1)数组末尾操作Array.prototype.shift/unshiftO(n)数组开头操作需要重新索引Array.prototype.sortO(n log n)V8引擎使用TimSort(归并插入)Array.prototype.includes/indexOfO(n)线性搜索Array.prototype.sliceO(n)需要复制元素Object.keys/values/entriesO(n)遍历对象属性记住大O表示法描述的是算法性能随输入规模增长的趋势实际性能还受常数因子、硬件特性、JavaScript引擎优化等因素影响。