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

自建网站 支付宝/郑州疫情最新动态

自建网站 支付宝,郑州疫情最新动态,页面有哪几个网站可以做,成都有做网站的公司吗 1.算法效率的度量方法1.算法效率的度量方法效率高一般指:算法的执行时间快。事后统计方法这种方法主要是通过设计好的测试程序和数据,利用计算机计时器对不同算法编制程序的运行时间进行比较,从而确定算法效率的高低。但这种方法…

dc22c385e42bfef6562ad097af229a5b.png

1.算法效率的度量方法

1.算法效率的度量方法

效率高一般指:算法的执行时间快。

事后统计方法

这种方法主要是通过设计好的测试程序和数据,利用计算机计时器对不同算法编制程序的运行时间进行比较,从而确定算法效率的高低。

但这种方法显然是有很大的缺陷的,不同测试环境差别不是一般的大!

事前分析估算方法

在计算机程序编写前,依据统计方法对算法进行估算。

2.高级语言编写的程序在计算机上运行耗时取决于下列因素:

-1.算法采用的策略,方案

-2.编译产生的代码质量

-3.问题的输入规模

-4.机器执行指令的速度 由此可见,抛开这些与计算机硬件、软件有关的因素,一个程序的运行时间依赖与算法的好坏和问题的输入规模。(所谓的问题输入规模是指输入量的多少)

3.函数渐进增长: 案例分析

1: 我们分析一下高斯先生的算法

算法1:

af9a29648516421ab509645b0ff53902.png

算法2:

60556a79238ba223298242c1abdd0066.png

算法1 执行 1+(n+1)+n=2n+2 次。

算法2 执行 1+1=2 次。

如果忽略头尾的开销,只把循环看过一个整体,2个算法的差距就是: n和1的区别。

2: 分析忽略的原因 n2 的故事

f8ca6b5c6e10aa78f2ba38bf28ba6aeb.png

案例中,循环条件 i从1到100,每次让j循环100次,如果非常较真的研究总共精确执行次数,那是非常累的。

我们研究算法的复杂度,侧重的是研究算法随着输入规模扩大增长量的一个抽象,而不是精确的定位需要执行多少次。 因为如何这样的话,我们就又得考虑回编译器优化等问题,然后,就都是然后叻。。!

所以,对于刚才例子的算法,我们可以果断判定需要执行1002次。

看下图, n2 在数据量不断增加的过程中,增长趋势是什么样的

de2792bd7316d974cb1ed39fea401cce.png

3: 分析忽略的原因 n 的故事

我们来测试一下算法A和B哪个更好?

A1: y=2n+3 A2: y=2n

B1: y=3n+1 B2: y=3n

我们来看图来分析:黑马反超

88dc3073db3b1363031de057a58f5d8b.png

a9559275692b53e7fe52e3d6e1fef66c.png

总结:

当n=1时,算法A1效率不如B1;

当n=2时,算法A1效率和B1相同;

当n>2时,算法A1效率开始优于B1;随着n的继续增加,效率逐步拉大;而方程后面的常数基本上可以忽略。

所以:总体上算法A1比B1优秀。

4: 分析忽略的原因 n和n2 的故事

我们来测试一下算法A和B哪个更好?

C1: y=4n+8 C2: y=n

D1: y=2n2 +1 D2: y=n2

我们来看图来分析:

1c07c0adece4c4a69d29630b7aa755d3.png

6a2c345b73126c2924ee3eb74d99253b.png

明显发现:

算法C1和C2基本上趋近一条相同的直线。

算法D1和D2相对于言比较明显,远大于C1和C2。

所以:总体上算法C1和C2 在 D1和D2面前,表明C算法变量X前面的常数基本可忽略不计。

5: 分析忽略的原因 n2 和n3 的故事

我们来测试一下算法A和B哪个更好?

E1: y=2n2 +3n+1 E2: y=n2

F1: y=2n3 +3n+1 F2: y=n3

我们来看图来分析:

90a6e7b4adf8eb784a92318d2b3d3055.png

0ed94be0c3670b6f0b2ff659887c59cc.png

明显发现:

算法E1和E2基本上趋近一条相同的直线。

算法F1和F2相对于言比较明显,远大于E1和E2。

所以:总体上算法E1和E2 在 F1和F2面前,表明E算法变量X前面的常数基本可忽略不计。

6: 分析忽略的原因 n 、 n2 和n3 的故事

我们来测试一下算法A和B哪个更好?

G: y=2n2

H: y=3n+1

I: y=2n2 +3n+1 F2: y=n3

我们来看图来分析:

15aa3eb47d2a5218161c6b46661f4aad.png

26cef038fc74a277b8717b0c250899d0.png

a0105c97e97d05d7dca15cd77f48ff72.png

明显发现:

算法G和I基本上趋近一条相同的曲线。

所以:总体上算法在高次项面前,低次项基本可忽略不计。

1.在判断一个算法的效率时,我们应改关注 主项(最高项)的阶数;常数项和低次项常常可以忽略。

2.判断一个算法好不好,我们只通过少量的数据是不能做出准确判断的,很容易以偏概全

2.算法时间复杂度

1.概念

各种装逼术语,可忽略.. 需铭记: 执行次数=时间 就行

时间复杂度的计算公式:

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

n表示问题规模

f(n)表示问题规模n的某个函数

ce7aa9edda052afa3df7b35cdc822fbf.png

2.符号表示 和 最优算法

大写的 O() 来表示算法时间复杂度的记发,我们称之为大O记法。

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

我们三个求和算法的时间复杂度分别为:O(1), O(n), O(n2 )

2c3c2a7c7016e45e30e7440ad4480188.png

3.推导大O阶,整理以下攻略

1.攻略如下:

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

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

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

-得到的最后结果就是大O阶

例如: y=2n2 +3n+1 最高阶 O(n2 )

2.常数阶-案例如下:

dfc21d1a9b0a90612376b7fcfe9a06da.png

O(8)? 很多初学者常常犯这个错误。

分析如下:

按照概念: T(n)是关于问题规模n的函数。

没错,跟问题规模有关,跟其他的表亲戚都没关系。

所以: 我们记做 O(1) 就可以。(当然可以参考上述攻略)

————————————————————————————————————————————

我想起我的回北京以后的一次面试,问我时间复杂度,我傻逼了一回。

当时什么都不懂,只是很单纯的以为是次数的问题。

2.线性阶-案例如下:

线性阶:就是随着问题规模n的扩大,对于计算次数呈直线增长。

时间复杂度: O(n)

07e24ea96907a163757e9b773eb2f3ca.png

3.平方阶-案例如下:

平方阶:就是随着问题规模n的扩大,对于计算次数呈指数是2的乘方增长。

时间复杂度: O(n2 )

如果是 m层嵌套,就是 O(nm )

2bc38d1546c3b0cb4d6d3790555d9272.png

如果嵌套循环的次数不相同呢?

当i=0, j循环n

当i=1, j循环n-1

...

当i=n-1, j循环1

结果: y=n+(n-1)+...+1= n(n+1)/2

根据攻略:

时间复杂度:O(n2 )

例如:

9505d6b23a51755b5cc479f562b0cfa6.png

4.对数阶-案例如下:

对数阶:就是随着问题规模n的扩大,对于计算次数呈指数增长。

由于: 2x =n

所以: x = log(2)n

时间复杂度: o(logn)

940f48b26b76bd2b28c370821ac63167.png

3.函数调用的时间复杂度分析

1.考考大家学习情况

function时间复杂度: O(1)

整体的书简复杂度: O(n)

a8939a610ca2b72d799a1f1fbd39ab5f.png

2.修改function的时间复杂度

思路:n表示常数。

count=1, 循环 n-1

...

count=n-1, 循环 1

总共:1+...+n-1 = n*(n-1)/2

整体的书简复杂度: O(n2 )

828cecd2f7c0f52d04a8cb4b256d6348.png

3.组合函数

公式: 0+n2 +n2 = 2n2

时间复杂度: O(n2 )

e98ca0f1c930747729a9feb8fe973adb.png

4.汇总: 常见的时间复杂度

想象一下:指数增长多块,意味着对数增长多慢。

汇总表

18de517d63f93995fd91362b257b7268.png

图形表:

09652e3bcb4974c3a092af52f99df8a7.png

d02e6f00c6143ed6ffff6bc4b1d3aec2.png

时间复杂度从小到大依次是:

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

至于 O(nlogn)在后续博客中会写到。

可以想象:O(n3 )以后的, n值增长后结果会大的难以想象。

4.算法时间复杂度分析:最坏情况和平均情况

53ddba58d920c2ff3af5f62deaa89ca2.png

一般我们工作中,运行时间是指: 最坏情况的运行时间。

例如:

算法的时间复杂度: 最好是O(1),最坏是O(n),那么时间复杂度就是O(n)

5.算法空间复杂度

例如:要判断 今年是否是闰年?

时间复杂度: 可以是O(1), 我可以把数全部存到数组中。

空间复杂度: 就是O(n) 线性增长。

用空间来换取时间开销的小技巧,不过得分场景。

空间复杂度的计算公式:

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

n为问题的规模

f(n)为语句关于n所占存储空间的函数

常说的复杂度:通常都是指 时间复杂度;并且时间复杂度才是算法的潮流。

http://www.jmfq.cn/news/4834621.html

相关文章:

  • 企业网站管理系统如何使用说明/国内新闻最新消息今天简短
  • 网站建设颜色/在线制作网站免费
  • 顺的网站建设信息/关键词怎么选择技巧
  • 全功能多国语言企业网站/关键词排名优化技巧
  • 郑州建设银行网站房贷网点在哪/北京网络网站推广
  • 可以浏览国外网站/百度seo竞价推广是什么
  • 如何做优酷网站赚钱/引擎优化是什么工作
  • 大家称赞的网站建设/全国前十名小程序开发公司
  • 天津酒店网站制作/百度免费安装
  • 网站建设模板是什么意思/登封网络推广
  • 福建建设工程环保备案网站入口/无线新闻台直播app下载
  • 做详情页比较好的网站/怎么创建网站快捷方式到桌面
  • 在中国可以做国外的域名网站吗/武汉seo网站推广
  • 微信公众号管理平台app/杭州seo按天计费
  • 做网站秒杀软件用什么语言好/青岛新闻最新今日头条
  • 有什么网站有小学生做的题目/河北百度seo关键词
  • 济南学网站建设哪里好/湖南seo网站多少钱
  • 去哪找做塑料的网站/足球世界积分榜
  • 免费微信网站开发/网络营销外包推广
  • 模板建站优点/网站建设报价单
  • 建德网站建设公司/品牌网络营销策划
  • 网站模板素材下载/优化seo是什么意思
  • 怎么做自己的网站logo/推广app大全
  • 网站加速工具/网络营销产品策略的内容
  • 水利部网站 生产建设项目/网络营销案例分析题及答案
  • 做网站推广弊端/it培训班学出来有用吗
  • wordpress琪亚娜/上海专业seo排名优化
  • 大连品牌网站建设公司/网络推广网站排行榜
  • 网站开发自学/seo关键词优化服务
  • 电商网站设计思想/百度竞价推广思路