python算法表示概念扫盲教程

发布时间 - 2026-01-11 00:38:27    点击率:

本文为大家讲解了python算法表示概念,供大家参考,具体内容如下

常数阶O(1)

常数又称定数,是指一个数值不变的常量,与之相反的是变量

为什么下面算法的时间复杂度不是O(3),而是O(1)。

int sum = 0,n = 100; /*执行一次*/ 
sum = (1+n)*n/2; /*执行一次*/ 
printf("%d", sum); /*行次*/

这个算法的运行次数函数是f(n)=3。根据我们推导大O阶的方法,第一步就是把常数项3改为1。在保留最高阶项时发现,它根本没有最高阶项,所以这个算法的时间复杂度为O(1)。

另外,我们试想一下,如果这个算法当中的语句sum=(1+n)*n/2有10句,即:

int sum = 0, n = 100; /*执行1次*/ 
sum = (1+n)*n/2; /*执行第1次*/ 
sum = (1+n)*n/2; /*执行第2次*/ 
sum = (1+n)*n/2; /*执行第3次*/ 
sum = (1+n)*n/2; /*执行第4次*/ 
sum = (1+n)*n/2; /*执行第5次*/ 
sum = (1+n)*n/2; /*执行第6次*/ 
sum = (1+n)*n/2; /*执行第7次*/ 
sum = (1+n)*n/2; /*执行第8次*/ 
sum = (1+n)*n/2; /*执行第9次*/ 
sum = (1+n)*n/2; /*执行第10次*/ 
printf("%d",sum); /*执行1次*/

事实上无论n为多少,上面的两段代码就是3次和12次执行的差异。这种与问题的大小无关(n的多少),执行时间恒定的算法,我们称之为具有O(1)的时间复杂度,又叫常数阶。

注意:不管这个常数是多少,我们都记作O(1),而不能是O(3)、O(12)等其他任何数字,这是初学者常常犯的错误。 

推导大O阶方法

1.用常数1取代运行时间中的所有加法常数

2.在修改后的运行次数函数中,只保留最高阶项

3.如果最高阶项存在且不是1,则去除与这个项相乘的常数

对数阶O(log2n) 

对数

如果a的x次方等于N(a>0,且a不等于1),那么数x叫做以a为底N的对数(logarithm),记作x=logaN, 。其中,a叫做对数的底数,N叫做真数。
5^2 = 25 , 记作 2= log5 25
对数是一种运算,与指数是互逆的运算。例如

① 3^2=9 <==> 2=log<3>9;

② 4^(3/2)=8 <==> 3/2=log<4>8;

③ 10^n=35 <==> n=lg35。为了使用方便,人们逐渐把以10为底的常用对数记作lgN

对数阶

int count = 1; 
while (count < n) 
{  
count = count * 2; /* 时间复杂度为O(1)的程序步骤序列 */ 
}

由于每次count乘以2之后,就距离n更近了一分。

也就是说,有多少个2相乘后大于n,则会退出循环。

由2^x=n得到x=log2n。所以这个循环的时间复杂度为O(logn)。 

线性阶O(n)  

执行时间随问题规模增长呈正比例增长

data = [ 8,3,67,77,78,22,6,3,88,21,2]
find_num = 22
for i in data:
  if i == 22:
    print("find",find_num,i )

线性对数阶O(nlog2n)

平方阶O(n^2)

for i in range(100):
 
  for k in range(100):
    print(i,k)

立方阶O(n^3)
k次方阶O(n^k),
指数阶O(2^n)。

随着问题规模n的不断增大,上述时间复杂度不断增大,算法的执行效率越低。  

 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# python  # 算法表示  # Python算法的时间复杂度和空间复杂度(实例解析)  # Python算法中的时间复杂度问题  # python算法题 链表反转详解  # python算法与数据结构之单链表的实现代码  # python算法与数据结构之冒泡排序实例详解  # 详解python算法之冒泡排序  # Python算法之图的遍历  # Python算法输出1-9数组形成的结果为100的所有运算式  # python算法演练_One Rule 算法(详解)  # Python算法应用实战之栈详解  # Python算法之栈(stack)的实现  # python算法学习之计数排序实例  # Python集成学习之Blending算法详解  # 高阶  # 执行时间  # 的是  # 这是  # 是一种  # 是指  # 与之  # 不等于  # 则会  # 又叫  # 具体内容  # 大家多多  # 近了  # 两段  # 称之为  # 越低  # 有多少个  # 也就是说  # 事实上  # nbsp 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 佛山网站制作系统,佛山企业变更地址网上办理步骤?  如何使用 jQuery 正确渲染 Instagram 风格的标签列表  如何用腾讯建站主机快速创建免费网站?  Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】  Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】  Android仿QQ列表左滑删除操作  如何获取上海专业网站定制建站电话?  简历在线制作网站免费版,如何创建个人简历?  如何实现javascript表单验证_正则表达式有哪些实用技巧  Laravel如何实现API版本控制_Laravel版本化API设计方案  西安专业网站制作公司有哪些,陕西省建行官方网站?  音乐网站服务器如何优化API响应速度?  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  Laravel如何记录自定义日志?(Log频道配置)  如何在橙子建站上传落地页?操作指南详解  Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程  Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  大同网页,大同瑞慈医院官网?  详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南  独立制作一个网站多少钱,建立网站需要花多少钱?  Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】  JS去除重复并统计数量的实现方法  Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧  百度输入法ai组件怎么删除 百度输入法ai组件移除工具  音响网站制作视频教程,隆霸音响官方网站?  悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】  Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧  Bootstrap CSS布局之列表  Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】  android nfc常用标签读取总结  MySQL查询结果复制到新表的方法(更新、插入)  如何在七牛云存储上搭建网站并设置自定义域名?  如何破解联通资金短缺导致的基站建设难题?  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  如何快速搭建高效WAP手机网站吸引移动用户?  使用Dockerfile构建java web环境  微信小程序 闭包写法详细介绍  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  网站建设保证美观性,需要考虑的几点问题!  详解Huffman编码算法之Java实现  1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比  Laravel路由怎么定义_Laravel核心路由系统完全入门指南  Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】  Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】