【Java】数组--二分法查找

时间:2022-05-30 22:10:12

代码

public class TestSearch{
public static void main(String args[]){
int[] a = {1,3,5,7,8,9,12,34,56,88};
int i = 56;
if(binarySearch(a,i) == -1)
System.out.print("要查找的值不在源数据中!");
else
System.out.print("数据在数组中下标为"+binarySearch(a,i)+"的位置");
}
//二分查找法,建立在有序数组的基础上。
public static int binarySearch(int[] a,int num){
if(a.length==0)
return -1; //-1表示没找到
int startPos = 0;
int endPos = a.length - 1;
int m = (startPos + endPos) / 2; //int类型数据自动抹掉小数点,2.5即2。
while(startPos <= endPos){
if(num == a[m])
return m;
if(num > a[m])
startPos = m + 1;
if(num < a[m])
endPos = m - 1;
m = (startPos + endPos) / 2;
}
return -1;
}
}

简单的查找

public class TestSearch{
public static void main(String args[]){
int[] a = {1,3,5,7,8,9,12,34,56,88};
int i = 12;
if(search(a,i) == -1)
System.out.print("要查找的值不在源数据中!");
else
System.out.print(search(a,i));
}
//从头到尾遍历查找
public static int search(int[] a, int num) {
for(int i=0; i<a.length; i++) {
if(a[i] == num) return i;
}
return -1;
}
}

效果图

【Java】数组--二分法查找