Java 概述:算法中的搜索时间

Java 概述:算法中的搜索时间,java,sorting,Java,Sorting,我有一个一般性的问题(取自一些计算机科学测试),我想得到一个解释,这个问题是: 给定特定大小的排序数组,并假设我们使用计算机科学中最快的方法来查找值​​在数组中。在这种方法中,任何元素的搜索时间都不超过N秒。现在我们乘以数组的大小。数组中任何元素的搜索时间最多为: 回答:N+1。 谁能给我一个完整的解释为什么这是答案?为什么不是2*N 谢谢。我想他们的意思是算法是在排序数组中搜索的最快方法。这是一种“分而治之”的算法,因此在这种算法的一个步骤中,我们将搜索区域减少了一半 例如: 让我们定义算法中

我有一个一般性的问题(取自一些计算机科学测试),我想得到一个解释,这个问题是:

给定特定大小的排序数组,并假设我们使用计算机科学中最快的方法来查找值​​在数组中。在这种方法中,任何元素的搜索时间都不超过N秒。现在我们乘以数组的大小。数组中任何元素的搜索时间最多为:

回答:N+1。

谁能给我一个完整的解释为什么这是答案?为什么不是2*N

谢谢。

我想他们的意思是算法是在排序数组中搜索的最快方法。这是一种“分而治之”的算法,因此在这种算法的一个步骤中,我们将搜索区域减少了一半

例如: 让我们定义算法中的一个步骤,用1个时间单位

array = [1 2 3 4 5 6 7 8], to find = 7
We test our value as the last element in first array.
1 step: divide into [1 2 3 4] and [5 6 7 8], 4 < 7, our value in second array
2 step: divide into [5 6] and [7 8], 6 < 7, our value in second array
3 step: divide into [7] and [8], 7 = 7, we found it.
array=[1 2 3 4 5 6 7 8],以查找=7
我们将值作为第一个数组中的最后一个元素进行测试。
第一步:分成[1 2 3 4]和[5 6 7 8],4<7,我们在第二个数组中的值
第2步:分成[56]和[78],6<7,我们在第二个数组中的值
第三步:分成[7]和[8],7=7,我们找到了它。
这就是二进制搜索的工作方式,它消耗3个单位的时间。 现在假设我们将数组加倍到[1..16],我们还需要一个步骤来将数组减少到上一个,所以我们需要4个时间单位。

我想他们的意思是算法是在排序数组中搜索的最快方法。这是一种“分而治之”的算法,因此在这种算法的一个步骤中,我们将搜索区域减少了一半

例如: 让我们定义算法中的一个步骤,用1个时间单位

array = [1 2 3 4 5 6 7 8], to find = 7
We test our value as the last element in first array.
1 step: divide into [1 2 3 4] and [5 6 7 8], 4 < 7, our value in second array
2 step: divide into [5 6] and [7 8], 6 < 7, our value in second array
3 step: divide into [7] and [8], 7 = 7, we found it.
array=[1 2 3 4 5 6 7 8],以查找=7
我们将值作为第一个数组中的最后一个元素进行测试。
第一步:分成[1 2 3 4]和[5 6 7 8],4<7,我们在第二个数组中的值
第2步:分成[56]和[78],6<7,我们在第二个数组中的值
第三步:分成[7]和[8],7=7,我们找到了它。
这就是二进制搜索的工作方式,它消耗3个单位的时间。 现在假设我们将数组加倍到[1..16],我们还需要一个步骤来将数组减少到上一个,所以我们需要4个时间单位。

我认为“在这个方法中,任何元素的搜索时间都不超过N秒”这句话只是让你感到困惑

我将忽略秒,并将其视为O(n)步。 有一种算法可以在log(x)步骤中查找元素(二进制搜索-参见其他answe)。所以

log2(x)=N

log2(2*x)=N+1

(我知道这不是很精确和正式,但我希望你能理解。)

我认为“在这种方法中,任何元素的搜索时间都不超过N秒”这句话只是让你感到困惑

我将忽略秒,并将其视为O(n)步。 有一种算法可以在log(x)步骤中查找元素(二进制搜索-参见其他answe)。所以

log2(x)=N

log2(2*x)=N+1


(我知道这不是很精确和正式,但我希望你能理解)。

这里提供的信息不够。这是你测试的实际1:1文本吗?是的,这完全一样。那么问题是无法回答的。这里没有提供足够的信息。这是你测试的实际1:1文本吗?是的,这是完全一样的。然后问题是无法回答的。这肯定是测试问题的目标答案,但我认为它的表述方式很差,不够充分。这肯定是测试问题的目标答案,但我认为它的表述方式很差,也不够充分。