二进制搜索是一种适用于分而治之方法的搜索技术。它用于搜索排序数组中的任何元素。
与线性相比,二进制搜索的O(logN)时间复杂度要快得多,而线性搜索算法的工作时间为O(N)时间复杂度。
本文讨论了使用迭代和递归方式在Java中执行二进制搜索的方法。
给定数字的排序数组。任务是搜索给定的元素在数组中使用二进制搜索。
例子:
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!
注意:假设数组已排序。
递归方法:
- 基本条件:如果起始索引大于终止索引,则返回false。
- 计算中间索引。
- 将中间元素与数字x进行比较。如果相等,则返回true。
- 如果更大,则以结束索引= middle-1调用同一函数,然后重复步骤1。
- 如果较小,则以起始索引= middle + 1调用同一函数,然后重复步骤1。
以下是JavaScript中的Binary Search(递归方法)的实现:
输出:
Element found!
Element not found!
时间复杂度: O(logN)。
迭代方法:在这种迭代方法中,我们将使用while循环,而不是递归,该循环将一直运行,直到达到基本条件,即开始变得大于结束。
以下是JavaScript中Binary Search(迭代方法)的实现:
输出:
Element found!
Element not found!
时间复杂度: O(logN)。