python算法表示概念扫盲的实例教程

这篇文章主要为大家详细介绍了python算法表示概念扫盲教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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

常数阶O(1)

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

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

立即学习“Python免费学习笔记(深入)”;

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=log9;

② 4^(3/2)=8 3/2=log8;

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

对数阶

int count = 1; while (count 

由于每次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 = 22for 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算法表示概念扫盲的实例教程的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2273764.html

(0)
上一篇 2025年2月27日 13:35:02
下一篇 2025年2月24日 21:44:31

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • python实现希尔排序的代码示例

    这篇文章主要介绍了python实现希尔排序,已编程实现的希尔排序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 观察一下”插入排序“:其实不难发现她有个缺点:   如果当数据是”5, 4, 3, 2, 1“的时候,此时我们将“无序块”中…

    2025年2月27日
    200
  • python实现解数独程序的代码示例

    最近在带孩子学习数独,职业使然,就上网搜了下相关程序的解法,这里分享给大家,希望对大家学习python有所帮助 偶然发现linux系统附带的一个数独游戏,打开玩了几把。无奈是个数独菜鸟,以前没玩过,根本就走不出几步就一团浆糊了。 于是就打算…

    2025年2月27日
    200
  • 实例详解Python 登录网站的方法

    这篇文章主要介绍了python 登录网站详解及实例的相关资料,需要的朋友可以参考下 Python 登录网站详解及实例 对于大部分论坛,我们想要抓取其中的帖子分析,首先需要登录,否则无法查看。   这是因为 HTTP 协议是一个无状态(Sta…

    编程技术 2025年2月27日
    200
  • 常见python中排序的代码详解

    这篇文章主要为大家详细介绍了python算法的基础教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 前言:前两天腾讯笔试受到1万点暴击,感觉浪费我两天时间去牛客网做题……这篇博客介绍几种简单/常见的排序算法,算是整理下。 时间复杂度 …

    2025年2月27日 编程技术
    200
  • python实现希尔排序的实例详解

    这篇文章主要介绍了python实现希尔排序,已编程实现的希尔排序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 观察一下”插入排序“:其实不难发现她有个缺点:   如果当数据是”5, 4, 3, 2, 1“的时候,此时我们将“无序块”中…

    2025年2月27日
    200
  • flask和mysql相连的实例详解(python)

    一个基于flask的web应用诞生第四篇,这篇文章主要介绍了如何让flask和mysql进行互联,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 上一章实现了登录的部分功能,之所以说是部分功能,是因为用户名和密码写成固定值肯定是不可以的,…

    2025年2月27日 编程技术
    100
  • 写一个python生成器生成杨辉三角的代码示例

    下面小编就为大家带来一篇python 生成器生成杨辉三角的方法(必看)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 用Python写趣味程序感觉屌屌的,停不下来 #生成器生成展示杨辉三角#原理是在一个2维数…

    编程技术 2025年2月27日
    200
  • 用Python写贪吃蛇游戏的代码实例

    这篇文章主要为大家详细介绍了python贪吃蛇游戏的编写代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 最近在学Python,想做点什么来练练手,命令行的贪吃蛇一般是C的练手项目,但是一时之间找不到别的,就先做个贪吃蛇来练练简单的语…

    2025年2月27日
    200
  • 详细介绍如何在python中使用朴素贝叶斯算法

    本文主要介绍了python中如何使用朴素贝叶斯算法的相关知识。具有很好的参考价值。下面跟着小编一起来看下吧 这里再重复一下标题为什么是”使用”而不是”实现”: 首先,专业人士提供的算法比我们自…

    2025年2月27日
    200
  • 教你用python爬取w3shcool的课程并且保存到本地的代码实例

    本文主要介绍python爬取w3shcool的jquery的课程并且保存到本地的方法解析。具有很好的参考价值。下面跟着小编一起来看下吧 最近在忙于找工作,闲暇之余,也找点爬虫项目练练手,写写代码,知道自己是个菜鸟,但是要多加练习,书山有路勤…

    2025年2月27日
    200

发表回复

登录后才能评论