顺序查找
//顺序查找
public static Integer getOrder(int[] arr,int num){
for (int i = 0;i < arr.length; i ++) {
if(arr[i] == num){
return i;
}
}
return -1;
}
二分法查找
//二分法查找
public static Integer getOneHalf(int[] arr,int number){
Arrays.sort(arr);
//开始位置
int start = 0;
//结束位置
int end = arr.length - 1;
//中间位置
int between = (arr.length - 1) / 2;
//下标位置
int index = -1;
while(start < end){
//判断一下中间位置的值是不是判断的值
if(arr[between] == number){
index = between;
return index;
}else{
//中间的值是不是比目标的值大
if(arr[between] > number){
//若大则把结束位置设置成中间位置
end = between - 1;
}else{
//否则把开始位置设置成中间位置
start = between + 1;
}
//更新中间位置
between = (start + end) / 2;
}
}
return index;
}
简单来说有三个变量条件,起始位置,结束位置,中间位置。首先获取有序数组的中间位置,然后把目标元素与中间位置相比较,若大于中间元素就可以得到目标元素应该是大于中间元素,所以把查找的开始位置设置成中间元素,重新获取新的中间元素,若小于中间元素,证明目标元素实在中间元素的"下边",所以把结束位置设置成中间元素,以此类推进行查找。
未完待续。。。。