这是一个非常简单的问题,但我很难完全理解这个概念。
我试图了解以下陈述之间的区别:
- 存在一种算法,在最好的情况下,它可以在 O(n) 中对一个包含 n 个数字的数组进行排序。
- 在最好的情况下,每个算法都会在 O(n) 中对一个包含 n 个数字的数组进行排序。
- 存在一种算法,在最好的情况下对 Omega(n) 中的 n 个数字的数组进行排序。
- 在最好的情况下,每个算法都会对 Omega(n) 中的 n 个数字的数组进行排序。
我将首先解释是什么让我发疯。我不确定 1 和 3 - 但我知道其中一个的答案是正确的,只需指定一种情况,而另一种情况的答案是通过检查所有可能的输入是正确的。因此,我知道其中一个必须是正确的,只需指定数组已经排序,但我不知道是哪个。我的老师总是告诉我要像我们正在检查谁是班上最高的人一样思考它,并且再次通过这些选项之一(1,3)就足以说他是并且没有理由检查所有班级。
我确实知道,如果我们要检查最坏的情况,那么这些陈述都不是真的,因为没有任何假设或额外内存的最佳排序算法是Omega(nlogn)
.
重要提示:我不是在寻找解决方案(一种能够进行匹配排序的算法)——只是试图更好地理解这个概念。
谢谢!