数据结构&算法 二分查找
-
二分查找
二分查找是一种运行时间复杂度为O(log n)的快速搜索算法。这种搜索算法基于分治法的原理。为了使该算法正常工作,数据收集应采用排序形式。二分查找通过比较集合中最中间的项来查找特定项。如果发生匹配,则返回项目的索引。如果中间项目大于该项目,则在中间项目左侧的子数组中搜索该项目。否则,将在中间项目右侧的子数组中搜索该项目。该过程同样在子数组上继续进行,直到子阵列的大小减小到零为止。 -
二分查找如何工作?
为了使二分查找有效,必须对目标数组进行排序。我们将通过一个图形示例来学习二分查找的过程。以下是我们的排序数组,让我们假设我们需要使用二分查找来搜索值31的位置。首先,我们将使用此公式确定数组的一半-就是(0 + 9)/ 2 = 4(4.5的整数值)。因此,4是数组的中间。现在,我们将存储在位置4的值与要搜索的值(即31)进行比较。我们发现位置4的值是27,这不是匹配项。由于该值大于27,并且我们有一个已排序的数组,因此我们也知道目标值必须在数组的右边。我们将低点更改为中间+1,然后再次找到新的中间值。现在我们的新中数是7。我们将存储在位置7的值与目标值31进行比较。存储在位置7的值不是匹配项,而是大于我们所寻找的值。因此,该值必须位于此位置的左边。因此,我们再次计算中点。这次是5。我们将存储在位置5的值与目标值进行比较。我们发现这次匹配了。我们得出结论,目标值31存储在位置5。二分查找将可搜索的项目减半,从而将进行比较的次数减少到非常少的数目。伪代码用C编程语言实现二分查找-如果我们编译并运行上述程序,它将产生以下结果-