二分查找算法
程序员文章站
2022-03-05 16:17:06
...
这个算法要求数据必须是排好序的
这次用的是递归实现。
package a;
public class BaniarySearch {
public static void main(String[] args) {
int[] arr = {9, 14, 34, 52, 80, 876};
int value = 877;
int sta =0;
int end = arr.length-1;
int index = seek(arr, value,sta,end);
if (index > 0) {
System.out.println("index = " + index);
System.out.println("index = " + arr[index]);
}else {
System.out.println("index = " + index);
}
}
private static int seek(int[] arr, int value, int sta, int end) {
int res=0;
if (sta <= end) {//这个if else 可以改成 直接用if 判断相反的条件,直接返回。因为是退出的条件,而且在前边
int mid = (sta+end)/2;
if (arr[mid] == value) {
return mid;
} else if (arr[mid] > value) {
res = seek(arr, value, sta, mid - 1);
return res;
}else {
res = seek(arr, value, mid+1, end);
return res;
}
}else {
System.out.println("null");
return -1;
}
}
}
上一篇: 算法之输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字
下一篇: 最大全1子矩阵