📜  JavaScript中的二进制搜索

📅  最后修改于: 2021-04-24 16:19:47             🧑  作者: Mango

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

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

本文讨论了使用迭代和递归方式在Java中执行二进制搜索的方法。

给定数字的排序数组。任务是搜索给定的元素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中的Binary Search(递归方法)的实现:

                                      

输出

Element found!
Element not found!

时间复杂度: O(logN)。

迭代方法:在这种迭代方法中,我们将使用while循环,而不是递归,该循环将一直运行,直到达到基本条件,即开始变得大于结束。

以下是JavaScript中Binary Search(迭代方法)的实现:

                                      

输出

Element found!
Element not found!

时间复杂度: O(logN)。