ProDeveloperTutorial.com

教程和编程解决方案
菜单
  • Shell脚本
  • 系统设计
  • Linux系统编程
  • 4g LTE
  • 编码问题
  • C
  • C ++
  • DSA
  • GIT

第4章:渐进符号的介绍

前开发者教程 2019年4月16日

在本章中,我们将学习

4.1什么是渐近符号[AN]?

4.2计算时间的增长顺序表。

4.3将影响运行时间的点列表。

4.4为什么在计算算法复杂度时忽略常量?

4.5渐进符号的类型。

4.1什么是渐近符号[AN]?

AN是用于计算运行时间以及算法增长率的数学函数。

在前面的章节中,我们了解了如何分析时空复杂度。借助先前的学习,我们将看到如何计算渐近符号。

运行时间是指计算机运行算法中所有语句所花费的时间。

增长率指的是当给出大量输入时算法将如何表现。

4.2以下是计算时间增长的一些顺序:

从上表中可以看出,对数算法的增长顺序小于指数算法的增长顺序。因此,如果我们有2种算法解决方案,那么我们应该选择消耗更少时间的解决方案。

logN: 运行时间是对数的。二进制搜索等算法。

N: 运行时间是线性的。线性搜索等算法。

NlogN: 该算法类似于快速排序和合并排序。

N^2: 运行时间是二次的。他们通常会有2个循环。像这样的算法:冒泡排序,选择排序。

2^n: 运行时间是指数的。

我们将在接下来的各章中详细研究它们。

4.3运行程序时,以下是会影响运行时间的要点列表:

1.电脑速度
2.使用的编译器
3.编程语言
4.选择算法
5.输入和输出的类型
6.输入和输出的大小

由于我们无法控制前3分,因此我们将其忽略。我们专注于接下来的3点。

4.4为什么在计算算法复杂度时忽略常量?

这可以通过两个步骤来回答:

1.当我们的时间复杂度为“ O(n ^ 2 + 3)”时,我们忽略常数“ 3”,而发现总的时间复杂度为“ O(n ^ 2)”。这是因为,我们始终想知道该算法在更大的“ n”值下将如何执行。例如,如果“ n”的值为“ 10000”,则常数“ 3”将可忽略不计。因此,我们将其忽略。

2.当我们的时间复杂度为“ O(3n ^ 2)”时,我们忽略常数“ 3”,而最终时间复杂度将为“ O(n ^ 2)”。这是因为不同的计算机体系结构将具有不同的方式来处理常数“ 3”。速度更快的计算机将能够将常量存储在寄存器中,并且能够更快地访问它。较慢的计算机会将其保存在内存中,因此速度较慢。由于我们感兴趣的是,没有算法在硬件性能方面没有表现出来,因此我们忽略了该常数。

4.5渐进符号的类型:

大O: 我们使用这种表示法来计算最坏的情况,称为严格上限。

大欧米茄: 我们使用此符号来计算下限。

位Theta: 我们使用这种表示法来计算平均情况。

让我们借助示例了解最佳,平均和最坏情况:

考虑我们正在搜索10个项目的列表中的键。我们一个接一个地搜索线性搜索。

这里 最佳情况 将是出现在第一项本身上的密钥。

平均情况 是,密钥出现在10个项目的中间位置。

最坏的情况下 是最后一项中出现的关键。

在下一章中,我们将研究 大O 表示法后跟 大欧米茄和大Theta .

AJ的DS和算法指南。单击此处以学习算法和数据结构教程的完整列表。 85多个章节可供学习。

 

该网站上可用的教程列表:

C编程20+章 C ++编程80+章
100多个编码问题 数据结构和算法85+章
系统设计20+章 Shell脚本编写12章
4g LTE 60+章节 最常见的编码问题
5G NR 50+章 Linux系统编程20+章
分享
电子邮件
鸣叫
领英
Reddit
绊倒
Pinterest的 的
上一篇文章
下一篇

关于作者

前开发者教程

每天我们都会讨论竞争性编程问题,请加入我们的网站:   电报频道

ProDeveloperTutorial.com

教程和编程解决方案
版权 © 2020 ProDeveloperTutorial.com
从以下课程获得热门课程: 教育性的
<object id="FlM5cCe" class="FskmX6K"><embed id="hY4cyL8"></embed></object>