当前位置: 首页 > news >正文

什么是时间复杂度和空间复杂度?

什么是时间复杂度和空间复杂度?

  • 时间复杂度:衡量代码运行时间随输入规模增大而增长的速度。简单来说,就是“代码跑多快”。

  • 空间复杂度:衡量代码运行时额外占用的内存空间随输入规模增大而增长的速度。简单来说,就是“代码用多少内存”。

我们通常用 大 O 表示法(Big O Notation)来描述它们,如 O(1)、O(n)、O(n²) 等。


常用时间复杂度及其示例

1. O(1) - 常数时间

  • 含义:运行时间不随输入规模变化,固定时间完成。

  • 示例:访问数组的第一个元素。

    public int getFirst(int[] array) {return array[0]; // 只执行一次操作
    }

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

  • 含义:运行时间随输入规模缓慢增长,每次操作将问题规模显著缩小。

  • 示例:二分查找。

    public int binarySearch(int[] array, int target) {int left = 0;int right = array.length - 1;while (left <= right) { // 每次循环规模减半int mid = left + (right - left) / 2;if (array[mid] == target) return mid;else if (array[mid] < target) left = mid + 1;else right = mid - 1;}return -1;
    }

3. O(n) - 线性时间

  • 含义:运行时间与输入规模成正比。

  • 示例:遍历数组并打印每个元素。

    public void printArray(int[] array) {for (int i = 0; i < array.length; i++) { // 循环 n 次System.out.println(array[i]);}
    }

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

  • 含义<

相关文章:

  • 抖音ai无人直播间助手场控软件
  • Java实时监控常用指令、工具
  • 大数据学习笔记
  • 软件定义网络(SDN):重塑未来网络的革命性架构
  • SQL学习-关联查询(应用于多表查询)
  • rk3588 驱动开发(一)字符设备开发
  • 《 Reinforcement Learning for Education: Opportunities and Challenges》全文阅读
  • 每日文献(十三)——Part one
  • kylin系统软件移植部署过程中遇到的问题及解决方案
  • WINUI——Background小结
  • Kotlin 与 Jetpack Compose 参数设计完全指南
  • Endnote 21显示字段设置与修改详细解析(附Endnote Click)
  • 性能优化实践
  • 关于flowable工作流的研究与初步使用
  • ​​​​​​​今日github AI科技工具汇总(20250415更新)
  • MODBUS RTU time_out实现
  • LLM中的N-Gram、TF-IDF和Word embedding
  • 从“数据孤岛”到“万物互联”,PLC组网重构工控边界
  • STM32 HAL库 DAC生成正弦波
  • 返工成本高,如何优化验收流程
  • 岭南非遗大IP来上海了,舞剧《英歌》在文化广场连演两场
  • 外交部否认中美就关税问题进行磋商谈判
  • 欧盟数字法开出首张罚单:苹果和Meta合计被罚7亿欧元
  • 看正背面月壤、听火星上的声音,记者探营“中国航天日”科普展
  • 一季度全国纪检监察机关共处分18.5万人,其中省部级干部14人
  • 在因关税战爆火的敦煌网上,美国人爱买什么中国商品