元素的查找:元素无序,循环遍历;元素有序,二分查找 - 时间复杂度O(logn),空间复杂度o(1)
class ArraySearch{
public static void main(String[] args){
/*//1.定义数组,无序
int[] arr={1,6,3,8,4};
//要查找的数
int num=3;
//for循环实现
/*for(int i=0;i<arr.length;i++){
//判断
if(arr[i]==num){
System.out.println(i);
break;
}
}*/
/*//增强for循环
int count=0;
for(int i:arr){
if(i==num){
System.out.println(count);
break;
}
count++;
}*/
//2.有序数组的查找
//定义有序数组
int[] arr={1,2,3,5,7,9};
//最小下标,最大数的下标,中间下标
int min=0;
int max=arr.length-1;
int mid=(min+max)/2;
//查找数
int num=9;
//
boolean flag=true;
//
while(arr[mid]!=num){
//大于num
if(arr[mid]>num){
max=mid-1;
}
//小于num
if(arr[mid]<num){
min=mid+1;
}
//判断临界
if(min>max){
System.out.println("数据有误");
flag=false;
break;
}
//重新计算中间值
mid=(max+min)/2;
}
//输出下标
if(flag)
System.out.println(mid);
}
}