Java 概述:算法中的搜索时间
我有一个一般性的问题(取自一些计算机科学测试),我想得到一个解释,这个问题是: 给定特定大小的排序数组,并假设我们使用计算机科学中最快的方法来查找值在数组中。在这种方法中,任何元素的搜索时间都不超过N秒。现在我们乘以数组的大小。数组中任何元素的搜索时间最多为: 回答:N+1。 谁能给我一个完整的解释为什么这是答案?为什么不是2*N 谢谢。我想他们的意思是算法是在排序数组中搜索的最快方法。这是一种“分而治之”的算法,因此在这种算法的一个步骤中,我们将搜索区域减少了一半 例如: 让我们定义算法中的一个步骤,用1个时间单位Java 概述:算法中的搜索时间,java,sorting,Java,Sorting,我有一个一般性的问题(取自一些计算机科学测试),我想得到一个解释,这个问题是: 给定特定大小的排序数组,并假设我们使用计算机科学中最快的方法来查找值在数组中。在这种方法中,任何元素的搜索时间都不超过N秒。现在我们乘以数组的大小。数组中任何元素的搜索时间最多为: 回答:N+1。 谁能给我一个完整的解释为什么这是答案?为什么不是2*N 谢谢。我想他们的意思是算法是在排序数组中搜索的最快方法。这是一种“分而治之”的算法,因此在这种算法的一个步骤中,我们将搜索区域减少了一半 例如: 让我们定义算法中
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文本吗?是的,这是完全一样的。然后问题是无法回答的。这肯定是测试问题的目标答案,但我认为它的表述方式很差,不够充分。这肯定是测试问题的目标答案,但我认为它的表述方式很差,也不够充分。