在预排序的数组中查找给定值的索引

时间:2010-03-16 13:07:48

标签: php algorithm arrays binary-tree

今天,我去接受采访,面试官问我如何在预先排序的数组中找到给定值(数字)的索引,如下所示:

$preSortedArr=array(23,32,36,41,45,54);

他还说不允许使用递归。

我认为该功能应如下所示:

function findIndexByValue($preSortedArray,$value){            
//some codes here       
}

你认为他对我的期待是什么解决方案?

编辑:抱歉,我忘了补充说他最初要我写伪代码,但我说我不知道​​。然后我尝试用PHP编写它,但我认为他期待一种与语言无关的解决方案。

5 个答案:

答案 0 :(得分:5)

由于他说数组是预先排序的,他可能期待二进制搜索。线性搜索(自阵列排序后可能进行优化 - 如果找到更大的值,则退出失败)当然在示例中的小数组上完全没问题。如果重要的话,可能会更快。

答案 1 :(得分:3)

他很可能正在寻找

  • array_search - 在数组中搜索给定值,如果成功则返回相应的键

编辑 对于给定的数组,这个问题有些奇怪。除了PHP的本机功能之外,使用其他任何东西都没有意义。另一种方法是使用whilenextkeycurrent,如果您想手动使用它。这仍然无法解释为什么面试官注意到你可能不会使用递归。

答案 2 :(得分:2)

$key = array_search("23", $array);

答案 3 :(得分:1)

他可能没有找到任何具体的答案。在选择实施该事物的方式之前,他可能想看看你如何思考和考虑不同的选择,并解释它们的优点和缺点。

答案 4 :(得分:1)

最好的方法是使用Binary search algorithm。最糟糕的案例复杂性是o(logn)

相关问题