a*算法的时间复杂度_数据结构(1)——算法和时间复杂度

Data Structure

d574717e58077afffb80c037230b049b.png

1

9cac8216f1c570d3938b2aae7bbb1f09.png

算法和时间复杂度

88f7e668-b62c-eb11-8da9-e4434bdf6706.svg

01.什么是数据结构?

程序设计 = 数据结构 + 算法

数据结构是关系,是数据元素相互之间存在的一种或多种特定关系的集合。

数据结构和算法凌驾于任何一种编程语言之上。

88f7e668-b62c-eb11-8da9-e4434bdf6706.svg

02.逻辑结构和物理结构

数据结构分为逻辑结构物理结构

逻辑结构是指数据对象中数据元素之间的逻辑关系,也是今后需要关注和讨论的问题。

四大逻辑结构:

集合——数据元素除了同属于一个集合之外,没有其他关系。

线性——数据元素具有一对一的关系。

树形——数据元素之间存在一对多的层次关系。

图形——数据元素之间存在多对多的关系。

物理结构一般指数据元素在计算机中的存储方法。

数据元素的存储结构形式有两种:顺序存储链式存储

顺序存储:把数据元素放在地址连续的存储单元中,其数据间的逻辑关系和物理关系是一致的,例如数组结构。

链式结构:把数据元素放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。此时存储关系不能反映逻辑关系,因此需要用指针存放数据元素的地址。

88f7e668-b62c-eb11-8da9-e4434bdf6706.svg

03.算法

算法:解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或者多个操作。

算法的五个基本特征:输入、输出、有穷性、确定性、可行性

算法效率的度量方法:

  1. 算法采用的策略、方案

  2. 编译产生的代码质量

  3. 问题的输入规模

  4. 机器执行指令的速度

88f7e668-b62c-eb11-8da9-e4434bdf6706.svg

04.算法的时间复杂度

定义:在进行算法分析的时候,语句总的执行次数T(n)是关于问题规模 n 的函数,进而分析T(n)随 n 的变化情况并确定T(n)的数量级。

算法的时间复杂度,也就是算法的时间度量,记作:

T(n)=  O(f(n))

它表示随问题规模n的增长,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐近时间复杂度,简称为时间复杂度。其中f(n)表示问题规模 n 的某个函数。

一般情况下,随着输入规模 n 的增大,T(n)增长最慢的是最优算法。

大O记法:用O( )来体现算法时间复杂度的记法。

推导大O阶的算法

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

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

  3. 如果最高阶项存在且不为1,则去除这个项的系数。

线性阶——一般含有非嵌套循环。线性阶就是随着问题规模 n 的扩大,对应计算次数呈直线增长。

平方阶——嵌套循环,包括不严格的嵌套循环。循环的时间复杂度等于循环体的复杂度乘以该循环运行的次数。

对数阶——需要应用数列知识。

常用的时间复杂度所耗的时间从小到大依次是:

O(1)< O(logn)< O(n)< O(nlogn)< O(n^2)< O(n^3)< O(2^n)< O(n!)< O(n^n)

最坏情况:查找一个有n个随机数字数组中的某个数字,最好的情况是第一个数字就是,那么算法的时间复杂度是O(1);但也有可能这个数字在最后位置,此时的时间复杂度是O(n)。

平均运行时间——期望运行的时间。

88f7e668-b62c-eb11-8da9-e4434bdf6706.svg

05.算法的空间复杂度

算法的空间复杂度通过计算算法所需的存储空间实现。

算法空间复杂度的计算公式记作:

S(n)= O(f(n))

其中,n为问题规模,f(n)为语句关于n所占存储空间的函数。

通常,我们都是用 “ 时间复杂度 ” 来指运行的时间需求,用 “ 空间复杂度 ” 指空间需求。

关于上面的总结,如果有错误之处,或者疑问,欢迎点击下面【写留言】进行讨论。

【写留言】

8ff7e668-b62c-eb11-8da9-e4434bdf6706.svgbaa604a2e0b4583cfa3ef74670543a08.png

---扫码点关注哦---

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/297726.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学会了!如果认错人了,就像这样亲一口!

1 千万不要用曲面屏炒股▼2 谁掏钱多就听谁的准没错▼3 你和你妈的通话记录▼4 em......陷入沉思▼5 人类1994年拍摄到的冥王星人类2018年拍摄到的冥王星▼6 猫&#xff1a;你滚开&#xff01;劳资不要运动&#xff01;▼7 吃下去长肉了你来找我我给你送实验室研究研究▼…

python循环语句嵌套_Python 循环语句

循环语句 ​循环语句主要是用于解决某些重复的代码工作&#xff0c;使需要重复的代码只写一遍即可。 Python循环语句主要有两种&#xff1a;while循环和for...in...循环。 一、while循环 主要用于不确定循环的次数时&#xff0c;根据条件进行判断&#xff0c;条件成立&#xff…

那些年,冒死拍过的老师逗逼搞笑照片 !

全世界只有3.14 % 的人关注了爆炸吧知识「你曾经拍到过老师哪个搞笑的瞬间」哈哈哈哈哈哈啊哈哈哈哈已笑疯了拍照的人最后真的都没有被打死吗_石小麦&#xff1a;这张&#xff1f;wanngsh-&#xff1a;当历史老师谈及日本女人2HyFMm&#xff1a;班主任扔实心球曹梓建&#xff1…

记一次 .NET 某上市工业智造 CPU+内存+挂死 三高分析

一&#xff1a;背景 1. 讲故事上个月有位朋友加wx告知他的程序有挂死现象&#xff0c;询问如何进一步分析&#xff0c;截图如下&#xff1a;看这位朋友还是有一定的分析基础&#xff0c;可能玩的少&#xff0c;缺乏一定的分析经验&#xff0c;当我简单分析之后&#xff0c;我发…

60佳优秀的 Photoshop 网页制作教程【下篇】

Photoshop 作为网页设计利器&#xff0c;是网页设计师必备。曾经和大分享过几篇优秀的 Photoshop 网页制作教程&#xff0c;喜欢的人非常多。今天这篇文章继续向大家分享优秀的 Photoshop 网页制作教程。其实&#xff0c;网页设计并没有你想的那么难&#xff0c;相信看完这些教…

android studio 创建.9文件,自己使用Android studio创建.9(点9)图片

本来标题想写"Mac版Android studio创建.9图片"&#xff0c;但是感觉区别应该不大&#xff0c;因为只需要拖拽一下鼠标就行了&#xff0c;键盘以及快捷键都不用不上。这篇文章其实也是自己看了其他文章后的一点补充&#xff0c;并不是所有人都会有的问题。既然是想标为…

java stream 求和_谈谈Java任务的并行处理

作者&#xff1a;ksfzhaohui前言谈到并行&#xff0c;我们可能最先想到的是线程&#xff0c;多个线程一起运行&#xff0c;来提高我们系统的整体处理速度&#xff1b;为什么使用多个线程就能提高处理速度&#xff0c;因为现在计算机普遍都是多核处理器&#xff0c;我们需要充分…

现在的男生真的太惨了

1 做男生不容易啊2 这到底是被甲方怎样虐过3 暴风螺旋般的伤口撒盐式连环补刀来源&#xff1a;知乎4 说好的雪橇三傻呢&#xff1f;5 谁都别打扰我看电视6 正弦余弦的空间展示7 这是什么原理&#xff1f;你点的每个赞&#xff0c;我都认真当成了喜欢

SharePoint 2010 - 如何导入\导出WebPart

为了保存WebPart并进行重用&#xff0c;有时我们必须导出该WebPart并在其他页面中将其导入。下面是对此过程的描述。 导出一个WebPart 导出一个WebPart可以将WebPart设置保存成计算机本地文件。并不是所有的WebPart都支持这个选项&#xff0c;该页面的所有者可能禁用了这个选项…

OC----内存管理

任何继承了NSObject的对象&#xff0c;都需要内存管理&#xff0c;但是对基本数据类型无效&#xff08;不需要释放&#xff09;原理&#xff1a;每个对象内部都保存了一个与之相关联的整数&#xff0c;称为引用计数器当使用alloc、new或者copy创建一个对象时&#xff0c;对象的…

python赋值语句格式_Python赋值语句后逗号的作用分析

Python赋值语句后逗号的作用分析 本文实例讲述了Python赋值语句后逗号的作用。分享给大家供大家参考。具体分析如下&#xff1a; IDLE 2.6.2 >>> a 1 >>> b 2, >>> print type(a)>>> print type(b)>>> c [] >>> d […

2020年高考数学试题难吗?历史上最难数学卷不是2003!

全世界只有3.14 % 的人关注了爆炸吧知识不经历风雨怎能知道明天会死得更惨今天&#xff0c;高考拉开大帷幕&#xff0c;数学考试结束的一瞬间&#xff0c;在微博上简直是一片哀嚎今年&#xff0c;延期一个月高考让许多人预测&#xff0c;难度比起非典那一年或许将有增无减&…

深入浅出Docker(三):Docker开源之路

背景 Docker从一开始的概念阶段就致力于使用开源驱动的方式来发展&#xff0c;它的成功缘于国外成熟的开源文化氛围&#xff0c;以及可借鉴的社区运营经验。通过本文详细的介绍&#xff0c;让大家可以全面了解一个项目亦或者一项技术是如何通过开源的方式发展起来的。为了更准确…

android activity解耦,Android与设计模式:用单一职责原则为Activity解耦

一、什么是单一职责原则单一职责原则(SRP&#xff1a;Single responsibility principle)又称单一功能原则&#xff0c;其定义为&#xff1a;一个类&#xff0c;应该只有一个可以导致变化的原因。光看概念一、什么是单一职责原则单一职责原则(SRP&#xff1a;Single responsibil…

利用Azure communication service实现跟Teams同样等级的沟通协作应用

大家都知道Teams是一个非常强大的沟通协作平台&#xff0c;包括聊天&#xff0c;团队协作&#xff0c;会议&#xff0c;以及应用集成等功能&#xff0c;现在在全世界拥有数以亿计的商业用户。作为Teams平台的一个延伸&#xff0c;产品组把一些核心功能变成了一个公开的服务&…

一个入门的学生选课系统

大三的时候写的一个学生选课系统&#xff0c;WinForm 的使用的SQL数据库。主要有学生&#xff0c;老师两类用户&#xff0c;老师查看选择自己课程的学生&#xff0c;学生进行选课&#xff08;只能选5门课&#xff09;&#xff0c;登陆的时候要有登陆错误次数限制超过会锁定&…

世界上最诡异的画,到底为何让无数人闻风丧胆?

全世界只有3.14 % 的人关注了爆炸吧知识也许只看到标题 &#xff0c;你一定想不到&#xff0c;传说中世界上最诡异的画是这张。《雨中女郎》这是乌克兰画家斯韦特兰娜捷列茨&#xff0c;绘画生涯中重要的一个作品。也许你会说哪里诡异呢&#xff1f;其实很多人看完这幅画以后&a…

pixel android8,谷歌Pixel 2更多信息:安卓8.1

给HTC手机团队注入11亿美元现金后&#xff0c;已经显示了谷歌要把硬件做下去的决心&#xff0c;特别是自家的Pixel系列&#xff0c;而10月4日新一代Pixel手机将正式来袭。据Android Police最新报道称&#xff0c;谷歌新的Pixel 2代手机将会提供一个新的功能名叫Always-On Song …

tftp 服务器 ip_360Stack裸金属服务器部署实践

女主宣言裸金属特性是一种将物理设备作为资源提供给租户的云计算服务&#xff0c;租户通过该服务可申请、管理和配置相应的物理设备资源&#xff0c;本文将介绍360Stack裸金属服务器的部署实践。PS&#xff1a;丰富的一线技术、多元化的表现形式&#xff0c;尽在“360云计算”&…

设计模式:状态模式

一、引子 状态模式自身结构非常简单——前面刚刚介绍了几个结构比较简单的设计模式&#xff0c;和他们 一样&#xff0c;状态模式在具体实现上留下了可变换的余地。我前面已经介绍过它的孪生兄妹策略模 式了&#xff0c;大家可以两者比较着阅读。本文将会讨论两者的区别。 二、…