C# O(n^2)与O(n)中的算法

C# O(n^2)与O(n)中的算法,c#,c++,algorithm,pseudocode,C#,C++,Algorithm,Pseudocode,我是计算机科学的新手,刚开始使用伪代码,我有一些问题。这是我这学期的第三周,大部分时间是自学。我有一些问题: O(n^2)与O(n)算法有什么区别? -类似地,什么是O(n logn)? -和Ω(n^2) 到目前为止,我写了: horner = 0; for( i = n; i >= 0; i −− ) horner = x * horner + a[i]; 但是发现它是O(n)。我如何转换它 什么是运行时间? -我知道第一行的任务是1次手术 在一个实际的算法中,比如说C#,它看

我是计算机科学的新手,刚开始使用伪代码,我有一些问题。这是我这学期的第三周,大部分时间是自学。我有一些问题:

O(n^2)与O(n)算法有什么区别? -类似地,什么是O(n logn)? -和Ω(n^2)

到目前为止,我写了:

horner = 0;
for( i = n; i >= 0; i −− )
    horner = x * horner + a[i];
但是发现它是O(n)。我如何转换它

什么是运行时间? -我知道第一行的任务是1次手术

在一个实际的算法中,比如说C#,它看起来是什么样子?

O(n)表示算法达到其最终状态所需的迭代次数、计算次数或步骤,而
n
是算法开始时给出的对象


假设您有一个由5个元素组成的数组,以及一个复杂度为O(n^2)的排序算法。您知道,如果对数组应用排序,它最多需要5^2=25个步骤才能达到其最终状态


另请阅读:

您所问的是计算机科学中的一个主题,称为算法复杂性分析。在程序中编写算法或解决方案是一个非常重要的主题,因为它涉及到运行时,或者计算速度会有多快。 大Oh或O(n)与算法运行的上限运行时间有关。在这种情况下,O(n)表示n个元素需要考虑所有n个元素才能完成算法计算,或者是线性的。这个大的Oh复杂性的范围是从恒定时间O(1)到非常大和非常慢的计算的最高O(n^n)。同时,考虑下列方程:

y=10n+1
y=5n+10
y=10n^2+5n+5 
这两者都是O(n)复杂度,因为随着元素数量的增加,方程也因此变得越来越大。我们忽略了常数,因为方程会因为变量而变大变快,而不是因为不变的常数值。 鉴于,方程式如下:

y=10n+1
y=5n+10
y=10n^2+5n+5 
由于10n^2是导致方程增长更快的最大增长元素,因此复杂性将为O(n^2)。我们放弃常数,并将最大的增长分量考虑到方程来评估复杂性。

对于大ω复杂度,我们认为这是算法复杂性分析的下界。例如,一个算法的运行速度可以与ω(n)(最佳情况)一样快,但所需时间可以与O(n^2)(最坏情况)一样长。这在排序算法或搜索算法的分析中很常见

在某些情况下,出于优化的原因,我们希望使用高效、快速的算法编写程序,特别是当我们需要更快的程序以获得更快的解决方案或更快的运行时间时

您提供的代码示例是O(n),因为它使用for循环迭代n个元素。考虑一个双循环,在循环中有第二个循环。这是O(n^2),因为在最坏的情况下,迭代n*n个元素

初始化空矩阵的O(n^2)运行时的Java伪代码:

int result[n][m];
for(int i=0; i<n; ++i){
    for(int j=0; j<m; ++j){
       result[i][j] = 0;
    }
}
int结果[n][m];

对于(inti=0;这几乎完全是C#语法,但我有点困惑。x*horner不是每次都是0吗?我可能完全误解了伪代码though@BenKnoble:这是一个输入错误。每次迭代都会更新一个“result”变量,因此第一次只能为零。@BenKnoble psedoo代码可以类似于实际代码。此外,“+a”[i] “将在第一次迭代后删除0”谢谢。我没有意识到这个问题。我在写评论时犯了太多错误和编辑,因此我认为我也需要一个O(n^3)符号。“它最多需要5^2=25个步骤才能达到其最终状态”否。它可能需要3n^2、10n^2、100000n^2或n^2+10^100个步骤,但仍然是O(n^2)@T.C.观点很好。即使
n+logn+nlogn+n^2
也算作O(n^2)。大O表示法是关于增长的顺序。如果你用10个元素运行算法,它将需要一些时间。当数字翻倍时,需要多长时间?时间翻倍表示它是O(n),时间翻倍表示它是O(n^2)。你可以查看“主定理"有关如何从时间度量中导出大O表示法的更多信息。@Ray是的,但它是关于渐近增长顺序的-因此,如果你将10加倍,它很可能是时间的四倍多,但随着原始数量越来越大,该比率接近4。O/Θ/Ω与最佳/平均/最坏情况无关。Comple完全不同的概念。你是对的,我做了一个编辑来交换上界和下界的最佳/平均/最差情况的用法。很抱歉出现这种混乱。竖起大拇指看这个漂亮的图表!