二分搜索是一种适用于分而治之的搜索技术。它用于搜索已排序数组中的任何元素。
与线性相比,二进制搜索的时间复杂度为 O(logN) 时要快得多,而线性搜索算法的时间复杂度为 O(N)。
在本文中,讨论了使用迭代和递归方式在 Javascript 中实现二进制搜索。
给定一个排序的数字数组。任务是搜索给定的元素在使用二进制搜索的数组中。
例子:
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 中二进制搜索(递归方法)的实现:
输出:
Element found!
Element not found!
时间复杂度: O(logN)。
迭代方法:在这种迭代方法而不是递归中,我们将使用一个 while 循环,循环将运行直到它达到基本条件,即 start 大于 end。
下面是二分搜索(迭代法)在 JavaScript 中的实现:
输出:
Element found!
Element not found!
时间复杂度: O(logN)。
如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程和学生竞争性编程现场课程。