freeCodeCamp/guide/chinese/computer-science/notation/big-o-notation/index.md

4.2 KiB
Raw Blame History

title localeTitle
Big O Notation 大O符号

大O符号

作为一名计算机科学家,如果您正在处理一个重要的软件,您可能需要能够估计一些算法或其他算法的运行速度。

Big O表示法用于计算机科学中以描述算法的性能或复杂性。实际上Big O表示法是一种特殊符号可以告诉您算法的速度有多快。当然您经常使用预定义的算法 - 当您这样做时,了解它们的速度或速度至关重要。

Big O符号是什么样的

这将告诉您算法将执行的操作数。它被称为Big O表示法因为你在操作次数之前放置了一个“大O”。

Big O建立了最坏情况的运行时间

假设您是治疗Harry Abbit的医生您可能会查看与Harry Abbit的病史相关的电子记录他是列表中的第一个人。让我们考虑一下他的生命取决于所有可用的医疗数据的情况。 假设您使用简单搜索在电子记录中查找某个人。您知道简单搜索需要花费On时间才能运行因此您必须查看Abbit的每个条目。当然您已经注意到Abbit是第一个条目因此您不必查看每个条目 - 您在第一次尝试时就找到了它。

这个算法花了On时间吗或者它花了O1时间因为你第一次尝试找到了这个人

在这种情况下这是最好的情况。但Big O符号是关于最坏情况的。这是On时间简单搜索仍然需要。令人放心的是简单搜索永远不会比On时间慢。

算法运行时间以不同的速率增长

我们假设检查一个条目需要1毫秒。通过简单的搜索医生必须检查10个条目因此搜索需要10毫秒才能运行。另一方面他只需要用_二进制搜索算法_检查3个元素log10大约是3因此搜索需要3毫秒才能运行。

但实际上,该列表将有超过一百个元素。

如果是这样,简单搜索需要多长时间?二进制搜索需要多长时间?

使用10亿个项目进行简单搜索的运行时间为10亿毫秒即11天。问题是二进制搜索和简单搜索的运行时间_不会以相同的速率增长_ 。

因此随着数字列表变大二进制搜索变得比简单搜索快得多。也就是说随着项目数量的增加二进制搜索需要更多的时间来运行。但是简单的搜索需要更多_的_时间来运行。因此随着数字列表变大二进制搜索变得比简单搜索快得多。

这就是为什么它不足以知道算法运行多长时间 - 你需要知道运行时间随着列表大小的增加而增加。这就是Big O符号的用武之地。

Big O表示法可让您比较操作次数

例如假设您有一个大小为n的列表。简单搜索需要检查每个元素因此需要n次操作。 Big O表示法中的运行时间为On

秒数在哪里?

没有 - 大O不会在几秒钟内告诉你速度。 _Big O表示法可让您比较操作次数。_它告诉你算法的增长速度。

</ p

算法最常见的运行时间

根据Big O表示法算法的最常见运行时间列表。 这里有五个大O运行时间你会遇到很多从最快到最慢排序

  1. Olog n也称为_日志时间_ 。 示例:二进制搜索。
  2. On也称为_线性时间_ 。 示例:简单搜索。
  3. On * log n 示例快速排序算法如quicksort将在第4章中介绍
  4. ON2 示例慢速排序算法如选择排序见第2章
  5. 上!) 示例:一个非常慢的算法,如旅行销售员(接下来会出现!)。

本文仅介绍Big O的基础知识。有关更深入的解释请查看各自的FreeCodeCamp算法指南。

更多信息