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

网站效果展示网站搜索优化公司

网站效果展示,网站搜索优化公司,南京网站优化公司,中橡装饰北京有限公司目录 什么是时间复杂度? 如何表示时间复杂度? 为什么需要时间复杂度? 用几个例子理解 怎么分析代码的时间复杂度? 什么是空间复杂度? 举例理解 什么是时间复杂度? 时间复杂度是用来衡量一个算法“…

目录

什么是时间复杂度?

如何表示时间复杂度?

为什么需要时间复杂度? 

用几个例子理解

怎么分析代码的时间复杂度?

什么是空间复杂度?

举例理解


什么是时间复杂度?

时间复杂度是用来衡量一个算法“运行时间随输入规模增长的速度”的指标。

我们关心的是:
➡ 当输入规模 n 越来越大时,程序运行时间变快还是变慢?变慢得有多快?

但注意:
我们不是计算具体运行时间(秒),而是研究增长趋势(数量级)!

比如:

  • 输入 10 个元素花 1ms,100 个元素花 100ms:说明时间增长很快。

  • 输入 10 个元素花 1ms,100 个元素花 2ms:说明增长很慢,很高效。

如何表示时间复杂度?

我们通常用大 O 表示法(Big-O Notation)来表示时间复杂度,比如:

  • O(1) 常数级

  • O(log⁡n)对数级

  • O(n)线性级

  • O(nlog⁡n) 线性对数级

  • O(n^2)平方级

  • O(2^n)、O(n!)指数、阶乘级(非常慢)

这些从快到慢大致排序为:

O(1) < O(log n) < O(n) < O(n log n) < O(n^2) < O(2^n) < O(n!)

为什么需要时间复杂度? 

能预测程序是否能处理大数据。 

  • 比如O(n^2)的程序在 n = 10^5时已经跑不动了;

  • 而 O(nlog⁡n) 在 n = 10^6 时依然很快。

 能比较不同算法的效率。

选择排序是 O(n^2),归并排序是 O(nlog⁡n),在大数据面前差别巨大。

用几个例子理解

1. O(1):常数级

int a = 5;
int b = a + 3;

 不管你输入多大,只执行几条语句,时间不随输入增长

2. O(n):线性级

for (int i = 0; i < n; i++) {cout << i;
}

 循环执行 n 次,输入增加一倍,运行时间也大致增加一倍

3. O(n²):平方级 

for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {cout << i << j;}
}

嵌套循环,每层都跑 n 次,总运行次数为 n×n = n^2

4. O(log n):对数级(如二分查找) 

int binarySearch(vector<int>& nums, int target) {int l = 0, r = nums.size() - 1;while (l <= r) {int mid = (l + r) / 2;if (nums[mid] == target) return mid;else if (nums[mid] < target) l = mid + 1;else r = mid - 1;}return -1;
}

 每次把搜索区间减半,只需要约 log⁡2n 次判断。

怎么分析代码的时间复杂度?

你可以遵循以下步骤:

  1. 看循环嵌套层数

    一层是 O(n),两层是 O(n^2),三层是 O(n^3)

  2. 注意递归的调用树

    如归并排序是 T(n)=2T(n/2)+O(n) → O(nlog⁡n)

  3. 看是否有减半、指数增长、全排列等模式

 

 


什么是空间复杂度?

空间复杂度(Space Complexity)是衡量一个算法在运行过程中临时占用多少内存空间的指标。

它回答的问题是:

如果输入规模是 n,算法为了运行,需要开辟多大的“额外空间”?

⚠️ 注意:

  • 不包括输入本身所占的空间,我们关心的是额外的空间使用。

  • 就像时间复杂度关注“运算量增长”,空间复杂度关注“内存占用增长”。

举例理解

1. O(1):常数空间(最优)

int sum = 0;
for (int i = 0; i < n; i++) {sum += arr[i];
}

这里只是用了一些变量(sum, i),无论 n 多大,占用空间都是常数级。

2. O(n):线性空间 

vector<int> res(n);
for (int i = 0; i < n; i++) {res[i] = arr[i] * 2;
}

 开了一个和输入一样大的数组 res,所以空间复杂度是 O(n)。

3. O(n²):二维数组 

int matrix[n][n];

 每个维度都是 n,所以总共是n×n=n2 个元素,空间复杂度是 O(n²)。

4. 递归调用带来的空间 

int factorial(int n) {if (n == 1) return 1;return n * factorial(n - 1);
}

 每次递归调用都要占用一次调用栈帧,调用 n 层,就要O(n) 空间。

有些递归算法虽然时间复杂度是 O(n),但如果用了“尾递归”或“迭代替代递归”,可以把空间优化到 O(1)。 


文章转载自:

http://3tflEsjA.cLzLy.cn
http://IKGGyq79.cLzLy.cn
http://Zno72Fkj.cLzLy.cn
http://pWK3ACEN.cLzLy.cn
http://hprtRxwD.cLzLy.cn
http://b9I8bUGX.cLzLy.cn
http://BAMIg5X1.cLzLy.cn
http://VFgEnr7M.cLzLy.cn
http://BRFRBBmf.cLzLy.cn
http://fmBvGa2U.cLzLy.cn
http://4Xb62ogT.cLzLy.cn
http://KiVAYbzk.cLzLy.cn
http://BMYnLMt0.cLzLy.cn
http://xmBMKOwd.cLzLy.cn
http://QVUGPiv7.cLzLy.cn
http://t0P0Yh5x.cLzLy.cn
http://1QymL4IO.cLzLy.cn
http://PqYjOAnt.cLzLy.cn
http://DTz249ry.cLzLy.cn
http://kRF8N1W0.cLzLy.cn
http://uJm9Pc3P.cLzLy.cn
http://DVuKWV9M.cLzLy.cn
http://NkkAmeFH.cLzLy.cn
http://fAk3EmCZ.cLzLy.cn
http://A9AZsiij.cLzLy.cn
http://I6Tvcpyl.cLzLy.cn
http://WDnAGbl7.cLzLy.cn
http://OMIQurdU.cLzLy.cn
http://qaLTsLtq.cLzLy.cn
http://HD8Pqpko.cLzLy.cn
http://www.dtcms.com/wzjs/757781.html

相关文章:

  • 手机网站 尺寸中国十大建筑公司
  • 手机单页网站郑州企业建站网站
  • 虎丘网站建设wordpress网站加壳
  • intitlt:山西大同网站建设网站规划建设实训报告书
  • 欧洲外贸网站有哪些wordpress 分类下怎么调用带有缩略图的文章?
  • 哪些企业合适做网站个人网站的设计与实现摘要
  • 南昌专业网站建设首页排名公司做网站需要哪些手续
  • 南通装饰网站建设网站建设企业文化
  • 网站建设包括哪些项目市场seo是什么意思
  • DW网站建设出现哪些问题my eclipse网站开发
  • 建设厅工作证查询网站免费制作视频
  • 公司购买网站怎么做分录重庆手机网站开发
  • 筹划建设协会网站的方案做公司网站的公司
  • 网站开发技术文档格式网站改版后百度不收录
  • 东城网站建设工作室手机app官方安装下载
  • 网站通栏尺寸建设手表网站的目的
  • 档案网站建设与档案信息化游戏平台网站开发
  • 做金融在那个网站上找工作没有装wordpress
  • 韩国美容网站 模板邀请专家集体会诊网站建设
  • 企业网站特色建设做网站怎么赚钱吗
  • 东至网站制作国际公司定义
  • 专业建站公司收费标准成都网站建设 全美
  • 电子商务网站的建设与维护泰安网站设计
  • 上海网站建设 微信开发公司营销型网站管理系统
  • 在那儿能找网站建设推广的网站有哪些
  • 浙江建设信息港网站考试成绩查询自定义wordpress管理员的头像
  • 网站建设运营维护方案项目经理职责及工作范围
  • 做动漫图片的网站申请开网店的详细步骤
  • 书店网站建设策划书网络营销工具包括
  • 西北建设有限公司网站作者自己建立的网站