Big Oh如何计算排序算法?我编写了一个程序,使用Selection sort,Merge sort和Insertion sort对一副牌(n = 52)进行排序。对于每个排序算法,我必须计算计算成本。我该怎么做?
现在我会诚实地承认这是我作业的一部分,但我只是在寻求帮助。我是Big Oh表示法的新手并经历了几个网站,但在排序算法方面无法弄明白。
至少有人能给我提示吗?
我刚才提到维基百科的选择排序,插入排序&合并排序。
插入排序: 最佳案例:O(n),最坏情况和平均情况:O(n ^ 2)
选择排序: 所有三种情况的O(n ^ 2)
合并排序: 所有三种情况的O(nlog n)
这是真的吗?
答案 0 :(得分:2)
您正在搜索的内容称为复杂性,在您的情况下可能就运行时而言。 “大O”代表上边界,而“小O”代表较低边界,平均值是“Theta”。它们代表用于执行程序的时间步长的功能,与缩放和添加无关。
示例:如果您的排序算法迭代每个列表(大小n)项目一次(例如使用for循环)并且每个步骤再次循环遍历其他所有项目(在那里执行l步骤),那么您将需要大约l * n * n步骤加上一些k步骤进行准备等。这将导致O(l*n*n + k)
的复杂性,等于O(n*n) = O(n^2)
,因为l和k是常数。