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

如何上传网站源码青岛seo排名公司

如何上传网站源码,青岛seo排名公司,建设执业资格注册中心官方网站,o2o平台名称有哪些文章目录 前言一、时间复杂度(Time Complexity)定义1. 常见时间复杂度类型2. 计算规则忽略常数项保留最高阶项循环嵌套递归算法 3. 代码示例(1)𝑂(1):常数时间(2)𝑂(&…

文章目录

  • 前言
  • 一、时间复杂度(Time Complexity)
    • 定义
    • 1. 常见时间复杂度类型
    • 2. 计算规则
      • 忽略常数项
      • 保留最高阶项
      • 循环嵌套
      • 递归算法
    • 3. 代码示例
      • (1)𝑂(1):常数时间
      • (2)𝑂(𝑛):线性时间
      • (3)𝑂(𝑛2):平方时间python
      • (4)𝑂(log⁡𝑛):对数时间
  • 二、空间复杂度(Space Complexity)
    • 定义
    • 1. 常见空间复杂度类型
    • 2. 代码示例
      • (1)𝑂(1):常数空间
      • (2)𝑂(𝑛):线性空间
      • (3)𝑂(𝑛)的递归调用(栈空间)
      • (4)𝑂(log𝑛)的递归调用
  • 三、对比与注意事项
  • 四、实际应用场景
    • 时间敏感型场景
    • 内存受限创景
    • 递归算法
  • 五、总结


前言

本文简单介绍了时间复杂度和空间复杂度。


一、时间复杂度(Time Complexity)

定义

定义:描述算法运行时间输入数据规模(通常用
𝑛 表示)增长的变化趋势,用大 𝑂符号表示(如 𝑂(𝑛))。它关注的是时间增长的渐进趋势,而非具体执行时间

1. 常见时间复杂度类型

复杂度 名称 典型场景
𝑂(1)常数时间 直接访问数组元素、哈希表插入/查询(理想情况)
𝑂(log⁡𝑛)对数时间 二分查找、平衡二叉搜索树操作
𝑂(𝑛)线性时间 遍历数组、链表操作
𝑂(𝑛log⁡𝑛)
线性对数时间 快速排序、归并排序𝑂(𝑛2)平方时间 冒泡排序、选择排序(双重循环)
𝑂(2𝑛)指数时间 穷举所有子集(如暴力递归解决旅行商问题)
𝑂(𝑛!)阶乘时间 全排列问题

2. 计算规则

忽略常数项

𝑂(2𝑛)→𝑂(𝑛)

保留最高阶项

𝑂(𝑛2+𝑛)→𝑂(𝑛2)

循环嵌套

循环层数决定幂次(如双重循环为 𝑂(𝑛2))

递归算法

递归调用次数递归树深度相关(如斐波那契递归为 𝑂(2𝑛))

3. 代码示例

(1)𝑂(1):常数时间

def get_first_element(arr):return arr[0]  # 直接访问数组第一个元素,时间与数组大小无关

(2)𝑂(𝑛):线性时间

def sum_array(arr):total = 0for num in arr:  # 遍历数组,执行次数与数组长度n成正比total += numreturn total

(3)𝑂(𝑛2):平方时间python

def bubble_sort(arr):n = len(arr)for i in range(n):          # 外层循环n次for j in range(n-i-1):  # 内层循环n-i-1次if arr[j] > arr[j+1]:arr[j], arr[j+1] = arr[j+1], arr[j]# 总操作次数 ≈ n*(n-1)/2 → O(n^2)

(4)𝑂(log⁡𝑛):对数时间

def binary_search(arr, target):left, right = 0, len(arr)-1while left <= right:mid = (left + right) // 2if arr[mid] == target:return midelif arr[mid] < target:left = mid + 1      # 每次搜索范围缩小一半else:right = mid - 1return -1

二、空间复杂度(Space Complexity)

定义

定义:描述算法运行过程中临时占用的内存空间随输入数据规模 𝑛增长的最大趋势,同样用大 𝑂表示。包括:
指令空间(代码本身)、数据空间(变量、动态分配的内存)、栈空间(递归调用时的上下文存储)

1. 常见空间复杂度类型

复杂度 名称 典型场景
𝑂(1)常数空间 原地排序(如冒泡排序)、单变量计算
𝑂(𝑛)线性空间 存储长度为n的数组、哈希表
𝑂(𝑛2)平方空间 二维数组(如邻接矩阵)
𝑂(log⁡𝑛)对数空间 递归树深度为对数(如快速排序的递归栈)

2. 代码示例

(1)𝑂(1):常数空间

def reverse_string(s):# 原地修改列表,不额外分配内存left, right = 0, len(s)-1while left < right:s[left], s[right] = s[right], s[left]left += 1right -= 1

(2)𝑂(𝑛):线性空间

def copy_array(arr):new_arr = []                # 新数组占用空间与输入数组大小n成正比for num in arr:new_arr.append(num)return new_arr

(3)𝑂(𝑛)的递归调用(栈空间)

def factorial(n):if n <= 1:return 1return n * factorial(n-1)  # 递归深度为n,栈空间占用O(n)

(4)𝑂(log𝑛)的递归调用

def binary_search_recursive(arr, target, left, right):if left > right:return -1mid = (left + right) // 2if arr[mid] == target:return midelif arr[mid] < target:return binary_search_recursive(arr, target, mid+1, right)  # 递归深度为log₂nelse:return binary_search_recursive(arr, target, left, mid-1)

三、对比与注意事项

维度 时间复杂度 空间复杂度
关注点 算法执行时间增长趋势 算法内存占用增长趋势
优化方向 减少循环次数、选择高效算法 减少变量数量、复用内存
常见取舍 时间换空间(如缓存) 空间换时间(如哈希表)

四、实际应用场景

时间敏感型场景

时间敏感型场景(如高频交易系统):优先优化时间复杂度。

内存受限创景

内存受限场景(如嵌入式设备):优先优化空间复杂度。

递归算法

递归算法:需同时考虑递归调用栈空间复杂度(如深度优先搜索可能引发栈溢出)。

五、总结

时间复杂度回答“算法跑多快”,空间复杂度回答“算法占多大内存”。
实际编码中需根据需求权衡两者,例如:
快速排序:时间 𝑂(𝑛log𝑛),空间 𝑂(log⁡𝑛)(递归栈)。
归并排序:时间 𝑂(𝑛log⁡𝑛),空间𝑂(𝑛)(额外数组)。
大O表示法是理论分析工具,实际性能还需结合常数因子和硬件特性


http://www.dtcms.com/wzjs/420478.html

相关文章:

  • 保亭县住房城市建设局网站如何建网站赚钱
  • 绍兴做网站价格网络推广渠道
  • 软件app制作整站优化包年
  • 视频弹幕网站怎么做的网站网址大全
  • 专门做瓷砖的网站广州seo成功案例
  • mt4网站建设济宁百度推广公司
  • 湖北省建设工程网站百度一下主页官网
  • 模板网站建设平台今天的最新新闻内容
  • ysl免费网站建设网络广告有哪些形式
  • nb-iot网站开发西安网站设计
  • 网站建设seo基本要求宁波网站推广方式
  • 怎么样做微网站培训方案及培训计划
  • wdcp wordpress forbidden 403网络营销的seo是做什么的
  • 做网站网页需要什么软件开发一个app平台大概需要多少钱?
  • 简单的网站有哪些湖南专业seo推广
  • 在县城做商城网站最佳磁力吧ciliba搜索引擎
  • 关于做情侣的网站的图片大全青岛做网络推广的公司有哪些
  • 专业网站建设制作十大营销案例分析
  • 免费制作地图app一个企业seo网站的优化流程
  • php网站访问量代码武汉seo 网络推广
  • 苏州市疫情防控指挥部最新公告小红书seo是什么
  • 上海金山网站设计公司域名查询注册商
  • 自己做的网站图片挡住了导航栏网站推广seo招聘
  • 电子商务网站建设案例教程推广怎么做才可以赚钱
  • 广告公司网站模版个人怎么做网络推广
  • 怎样建设自己网站的后台seoul是什么意思
  • 广州顶正餐饮培训学校天津网络推广seo
  • 学做饺子馅上那个网站百度推广代运营公司
  • 江苏省城乡建设部网站首页免费优化网站
  • wordpress主题 仿36氪宁波seo资源