📜  JavaScript 中的二分查找

📅  最后修改于: 2021-09-16 11:02:53             🧑  作者: Mango

二分搜索是一种适用于分而治之的搜索技术。它用于搜索已排序数组中的任何元素。

与线性相比,二进制搜索的时间复杂度为 O(logN) 时要快得多,而线性搜索算法的时间复杂度为 O(N)。

在本文中,讨论了使用迭代和递归方式在 Javascript 中实现二进制搜索。

给定一个排序的数字数组。任务是搜索给定的元素x在使用二进制搜索的数组中。

例子

Input : arr[] = {1, 3, 5, 7, 8, 9}
        x = 5
Output : Element found!

Input : arr[] = {1, 3, 5, 7, 8, 9}
        x = 6
Output : Element not found!

注意:假设数组已排序。

递归方法:

  1. 基本条件:如果起始索引大于结束索引,则返回 false。
  2. 计算中间索引。
  3. 将中间元素与数字 x 进行比较。如果相等返回true。
  4. 如果更大,调用结束索引 = middle-1 的相同函数并重复步骤 1。
  5. 如果较小,调用相同的函数,起始索引 = middle+1 并重复步骤 1。

下面是 JavaScript 中二进制搜索(递归方法)的实现:

                                      

输出

Element found!
Element not found!

时间复杂度: O(logN)。

迭代方法:在这种迭代方法而不是递归中,我们将使用一个 while 循环,循环将运行直到它达到基本条件,即 start 大于 end。

下面是二分搜索(迭代法)在 JavaScript 中的实现:

                                      

输出

Element found!
Element not found!

时间复杂度: O(logN)。

如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程学生竞争性编程现场课程