查找算法
这篇主要写一些查找算法
线性查找
package lx3;
public class TestSearch {
//线性查找
public static void main(String[] args){
//目标数组
int[] elements = new int[]{2,9,5,1,6,8,3,4};
//目标元素
int target = 5;
//目标元素所在下标(默认-1)
int index = -1;
//遍历数组
//思考一下 若(i<=elements.length)会是什么情况?
for(int i=0;i<elements.length;i++){
//若数组中值等于target则返回
if(elements[i]==target){
intdex = i;
break;
}
}
//打印
System.out.println("index:"+index);
}
}
二分法查找
package lx3;
public class TestBinarySearch {
public static void main(String[] args){
//目标数组
int[] arr = new int[]{1,2,3,4,5,6,7,8,9};
//目标元素
int target = 6;
//记录开始位置
int begin = 0;
//记录结束位置
int end = arr.length-1;
//记录中间位置
int mid = (begin+end)/2;
//记录目标位置
int index=-1;
//循环查找
while(true){
//假如不存在的情况呢?该如何写
/*if(begin>=end){
return;
试试这段写与不写的效果
}*/
//判断中见元素是不是要查找的元素
if(arr[mid]==target){
index = mid;
break;
//中间这个元素不是要查找的元素
}else{
//如果中间这个元素比目标元素大
if(arr[mid]>target){
//把结束位置调到中间位置的前一个位置
end = mid-1;
//如果中间这个元素比目标元素小
}else{
//把开始位置调到中间位置的后一个位置
begin = mid+1;
}
//调整一次则,取出新的中间位置
mid=(begin+end)/2;
}
}
//输出
System.out.println("index:"+index);
}
}