更改

跳到导航 跳到搜索
删除2,023字节 、 2021年9月23日 (四) 21:12
第273行: 第273行:  
运行线性搜索程序的计算机A的效率呈现线性增长,即程序的运行时间与其输入大小成正比,也就是说将输入大小增加一倍时运行时间也将增加一倍,将输入大小增加四倍则运行时间也会增加四倍等等。另一方面,运行二分法搜索程序的计算机B的效率呈现出对数增长趋势,将输入大小变成原来的两倍只会使运行时增加一个常量(在本例中为50,000 ns)。尽管从表面上看计算机A是一台速度更快的机器,但计算机B在运行时势必会地超过计算机A,因为它运行的算法增长速度要慢得多。
 
运行线性搜索程序的计算机A的效率呈现线性增长,即程序的运行时间与其输入大小成正比,也就是说将输入大小增加一倍时运行时间也将增加一倍,将输入大小增加四倍则运行时间也会增加四倍等等。另一方面,运行二分法搜索程序的计算机B的效率呈现出对数增长趋势,将输入大小变成原来的两倍只会使运行时增加一个常量(在本例中为50,000 ns)。尽管从表面上看计算机A是一台速度更快的机器,但计算机B在运行时势必会地超过计算机A,因为它运行的算法增长速度要慢得多。
   −
===生长规律 Orders of growth===
+
===生长规律===
   −
{{main|Big O notation}}
+
非正式地,一个算法可以说表现出一个数学函数级的增长率,如果超过一定的输入大小''n'',函数乘以一个正常数为该算法的运行时间提供了一个上限或极限。换言之,对于给定的输入大小''n''大于某个''n''<sub>0</sub>和常数''c'',该算法的运行时间永远不会大于。这个概念经常使用大写字母''O''符号表示。例如,由于插入排序的运行时随着其输入大小的增加而二次增长,因此插入排序的时间复杂度可以表示为''O''(''n''<sup>2</sup>)。
   −
Informally, an algorithm can be said to exhibit a growth rate on the order of a [[Function (mathematics)|mathematical function]] if beyond a certain input size ''n'', the function {{tmath|f(n)}} times a positive constant provides an [[Asymptotic analysis|upper bound or limit]] for the run-time of that algorithm.  In other words, for a given input size ''n'' greater than some ''n''<sub>0</sub> and a constant ''c'', the running time of that algorithm will never be larger than {{tmath|c \times f(n)}}.  This concept is frequently expressed using Big O notation.  For example, since the run-time of [[insertion sort]] [[quadratic growth|grows quadratically]] as its input size increases, insertion sort can be said to be of order ''O''(''n''<sup>2</sup>).
     −
Informally, an algorithm can be said to exhibit a growth rate on the order of a mathematical function if beyond a certain input size n, the function  times a positive constant provides an upper bound or limit for the run-time of that algorithm.  In other words, for a given input size n greater than some n<sub>0</sub> and a constant c, the running time of that algorithm will never be larger than .  This concept is frequently expressed using Big O notation.  For example, since the run-time of insertion sort grows quadratically as its input size increases, insertion sort can be said to be of order O(n<sup>2</sup>).
+
对于给定的算法,大O表示法是表达算法最坏情况的一种简便方法,尽管它也可以用来表示平均情况-例如,快速排序的最差表现是''O''(''n''<sup>2</sup>) ,但是平均情况下其运行时是{{math|''O''(''n''&nbsp;log&nbsp;''n'')}}。
   −
非正式地,一个算法可以说表现出一个数学函数级的增长率,如果超过一定的输入大小 n,函数乘以一个正常数为该算法的运行时间提供了一个上限或极限。换言之,对于给定的输入大小n大于某个n0和常数c,该算法的运行时间永远不会大于。这个概念经常用大O符号表示。这个概念经常使用大 o 符号表示。例如,由于插入排序的运行时随着其输入大小的增加而二次增长,因此插入排序的时间复杂度可以表示为O(n<sup>2</sup>)。
+
<br>
 
  −
 
  −
 
  −
Big O notation is a convenient way to express the [[Best, worst and average case|worst-case scenario]] for a given algorithm, although it can also be used to express the average-case &mdash; for example, the worst-case scenario for [[quicksort]] is ''O''(''n''<sup>2</sup>), but the average-case run-time is {{math|''O''(''n''&nbsp;log&nbsp;''n'')}}.
  −
 
  −
Big O notation is a convenient way to express the worst-case scenario for a given algorithm, although it can also be used to express the average-case &mdash; for example, the worst-case scenario for quicksort is O(n<sup>2</sup>), but the average-case run-time is .
  −
 
  −
对于给定的算法,大O表示法是表达算法最坏情况的一种简便方法,尽管它也可以用来表示平均情况-例如,快速排序的最差表现是  O(n<sup>2</sup>) ,但是平均情况下其运行时是{{math|''O''(''n''&nbsp;log&nbsp;''n'')}}。
      
===经验增长规律 Empirical orders of growth===
 
===经验增长规律 Empirical orders of growth===
7,129

个编辑

导航菜单