二分查找
1:定义
二分查找(Binary Search),也称为折半查找,是一种在有序数组中查找特定元素的算法。它的基本思想是通过将数组分成两部分,并与目标元素进行比较,从而确定目标元素在数组中的位置。
2:二分查找的过程如下:
-
首先,确定数组的中间元素。
-
将目标元素与中间元素进行比较。
-
如果目标元素等于中间元素,则查找成功,返回中间元素的索引。
-
如果目标元素小于中间元素,则在数组的左半部分继续查找。
-
如果目标元素大于中间元素,则在数组的右半部分继续查找。
-
-
重复上述步骤,直到找到目标元素或确定目标元素不存在。
3:二分查找的关键
要保持数组有序。
且按关键字大小有序排列
二分查找的时间复杂度为O(log n),其中n为数组的长度。由于每次查找都将数组的规模减半,因此二分查找是一种高效的查找算法。然而,二分查找要求数组有序,并且只适用于静态查找,即不会频繁插入、删除元素的情况下。
4:代码示例
public class Search { public static void main(String[] args) { int[] scores = {1,2,3,4,5,6}; int num = 4; //要查找的值 int index = -1; //定义一个下标。如果没找到,则输出为-1; int left = 0; //定义最小的初始值 int right = scores.length - 1; //定义最大初始值 while (left <= right){ int middle = (left + right) >> 1; //定义一个中间比较变量 if(scores[middle] == num){ //将中间值与num进行比较 index = middle; break; } else if (scores[middle] > num ) { right = middle - 1; }else{ left = middle + 1; } } System.out.println(index); } }
5:图例