1.问题
通过二分法查找一个有序数组中的吗,某个元素
2.分析
二分法:在一组排好序的数中进行查找,输出要找的数的下标,首先取数组的中位数mid,如果要找的数比中位数大,将查找范围缩小至数组的后半段,从mid到right查找,再取此子数组的中间位置数mid2,如果查找数比其小,则从mid到mid2查找。。。。。
。。。。。。
直至找到待查找数,或者找不到返回-1
3.代码实现
public class ARR {
public static void main(String[] args) {
int[] arrary = {12, 19, 1, 25, 99, 52, 3, 67, 23, 15};
int x = 52;
mybubblesort(arrary);
ltest.Printarr(arrary);
System.out.println();
System.out.println(mybinarysearch(arrary, x));
}
public static int mybinarysearch(int[] arr, int q) {
int len = arr.length;
int right = len - 1;
int left = 0;
int mid = 0;
while (left <=right) {
mid = (right + left) / 2;
if (arr[mid] > q) {
right = mid;;
} else if (arr[mid] < q) {
left = mid;
} else {
return mid;
}
}
return -1;
}
先排序才能使用二分查找;