Big o 帮助进行渐近分析

Big o 帮助进行渐近分析,big-o,asymptotic-complexity,Big O,Asymptotic Complexity,我是编程新手,最近被介绍到渐近复杂性的话题。我想知道的是,给定元素的数量和排序所需的时间,如何计算排序方法的渐进复杂性 这是我的意思的一个例子 “sortArray”对包含400个元素的排序数组进行排序的时间:4 “sortArray”对包含800个元素的排序数组进行排序的时间:8 “sortArray”对包含1600个元素的排序数组进行排序的时间:16 “sortArray”对包含3200个元素的排序数组进行排序的时间:26 “sortArray”对包含400个元素的随机数组进行排序的时间:

我是编程新手,最近被介绍到渐近复杂性的话题。我想知道的是,给定元素的数量和排序所需的时间,如何计算排序方法的渐进复杂性

这是我的意思的一个例子

  • “sortArray”对包含400个元素的排序数组进行排序的时间:4
  • “sortArray”对包含800个元素的排序数组进行排序的时间:8
  • “sortArray”对包含1600个元素的排序数组进行排序的时间:16
  • “sortArray”对包含3200个元素的排序数组进行排序的时间:26

  • “sortArray”对包含400个元素的随机数组进行排序的时间:255

  • “Sortaray”对包含800个元素的随机数组进行排序的时间:958
  • “Sortaray”对包含1600个元素的随机数组进行排序的时间:4059
  • “Sortaray”对包含3200个元素的随机数组进行排序的时间:16585

关于如何计算像这样的大O符号有什么帮助吗?谢谢

根据定义,算法的渐近复杂度表示的是随着输入大小的增加(在时间、空间或其他资源中)的增长率。最好对算法本身进行分析,以确定该增长率。然而,如果您只有一个“黑盒”排序算法,并且您只知道输入的大小和结果时间,那么您所能做的最好的事情就是检查输入与时间的关系图是否以特定函数可能的模式增长

为了验证这一想法,图形函数如下:

  • f(n)=n
  • f(n)=n ln
  • f(n)=n^2

等等,然后查看哪个最类似于您创建的运行算法的时间图。请记住,渐近分析最终忽略了每个项和任何低阶项上的常数因子。因此,如果您的算法仍然在线性时间内运行,即使图形看起来像f(n)=2n,您仍然有一个O(n)算法。

我不确定您是否可以从结果中精确计算出这一点,但一个好的开始是尝试绘制这些,如时间与计数、时间与计数^2、时间与日志计数等,并寻找模式