最佳情况定义为在大小为n的所有输入中哪个大小为n的输入最便宜。 “我算法的最佳情况是n = 1,因为这是最快的。”?是对还是错?如果我给出大尺寸的输入N,则意味着需要额外的时间。如果我输入较小的N值,它的意思是它需要更少的时间?所以,它的意思是我们依赖于输入的大小..?并且,如果我为N尺寸数组提供输入任何数字(如45)以及最后找到的元素,那么它也意味着最坏的情况? (但是来自N的地方?它已经修好了吗?) 我对这一切感到困惑?如果我考虑这两种情况。的意思是,
它的平均值,最差情况,最佳情况,平均情况,取决于上面提到的两件事(N尺寸数组和输入类型)。 我对吗?
答案 0 :(得分:1)
n是固定的,你不能将它设置为1:"在所有大小为n"的输入中最便宜。最佳情况和最坏情况仅取决于输入的类型,其大小必须为n。
例如,如果你在n个元素中进行线性搜索,最好的情况是如果你在第一次尝试时立即找到它,最坏的情况是你必须查看所有n个元素。
答案 1 :(得分:0)
当声明某些东西是O(n)时,这意味着预期时间与输入中元素的数量成比例。这意味着如果您将输入加倍,那么您将工作的预期时间加倍。这样的一个例子是逐个元素地遍历元素,直到找到结果。或者添加数组的所有元素。
O(1)表示无论输入量多少,该函数都将花费相同的时间。在哈希中查找值时,您会看到这一点。它是一个索引查找,所以它不必遍历每个元素。
像O(n ^ 2)这样的东西意味着努力与所涉及的元素数量的平方成正比。运行所有元素组合时,您会看到这一点。因此,10个数组将为具有2个参数的函数提供100种不同的可能输入。
搜索有序数组可能在O(log(n))中完成,因为你可以猜出一个元素,然后消除一半而不必搜索它们。
答案 2 :(得分:0)
取决于你的算法。例如,如果我想在数组中使用一个元素,无论你的大小是多少,它都需要相同的时间。因为它花费O(1)时间。但是,如果要使用需要O(N)时间的算法:
changeColor(c){
this.setState(prevState => ({
color: prevState.colors,
colors: prevState.color
}))
}
数组越大,算法运行得越慢。 还有像这样的情况
FindMaxElementInAnArray(A)
a=-∞
for each i in A
if i>a
a=i
return a
这个需要O(100-N)时间。