This question already has answers here:
What is a plain English explanation of “Big O” notation?
                                
                                    (39个答案)
                                
                        
                7年前关闭。
            
        

Big Oh如何计算排序算法?我编写了一个程序,用于使用选择排序,合并排序和插入排序对一副纸牌(n = 52)进行排序。对于每种分类算法,我必须计算出计算成本。我该怎么做?

现在,我很诚实地承认这是我家庭作业的一部分,但我只是在寻求帮助。我是Big Oh表示法的新手,曾浏览过两个网站,但无法根据排序算法弄清楚。

至少有人可以给我提示吗?

我刚刚提到了Wikipedia的“选择”排序,“插入”排序和“合并”排序。

插入排序:
最佳情况:O(n),最差情况和平均情况:O(n ^ 2)

选择排序:
这三种情况的O(n ^ 2)

合并排序:
这三种情况的O(nlog n)

真的吗?

最佳答案

您要搜索的内容称为复杂性,就您而言,可能是在运行时方面。 “大O”仅代表上限,而“小O”则代表下限,平均值为“ Theta”。它们代表用于程序执行的时间步长函数,与缩放和加法无关。

示例:如果您的排序算法对每个列表(大小为n)的项目进行一次迭代(例如,使用for循环),并且在每个步骤上又对其他每个项目进行循环(在此处执行l个步骤),那么您将需要大约l * n * n个步骤加上大约k个步骤进行准备等。这将导致O(l*n*n + k)的复杂度等于O(n*n) = O(n^2),因为l和k是常数。

更多和更深入的信息:http://en.wikipedia.org/wiki/Time_complexity

关于java - 什么是排序算法的大哦符号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14843055/

10-10 09:24
查看更多