本文最后更新于230 天前,其中的信息可能已经过时,如有错误请发送邮件到qiqin-chang@qq.com
顺序查找:
public class Main {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6,7,8,9};
System.out.println(SequentialSearch(arr,6));
}
//顺序查找
static int SequentialSearch(int[] arr,int target){
for(int i=0;i<arr.length;i++){
if(arr[i]==target){
return i;
}
}
return -1;
}
}
二分查找:
public class Main {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6,7,8,9};
System.out.println(binarySearchBasic(arr,7));
System.out.println(binarySearch(arr,10));
}
/**
* 二分查找基础版
* Params:arr-待查找的升序数组 target-待查找的目标值
* Return:找到则返回索引 找不到返回-1
*/
public static int binarySearchBasic(int[] arr,int target){
int i=0,j=arr.length-1;//设置指针和初值 1.i=0,j=arr.length;
while(i<=j){//范围内有东西2.(i<j)
int m = (i+j)>>>1;
if(target<arr[m]){//目标在左边
j=m-1;//3.j=m
}else if(arr[m]<target){//目标在右边
i=m+1;
}else{
return m;
}
}
return -1;
}
//大量数据改进版
public static int binarySearch(int[] arr, int target) {
int i=0,j=arr.length;
while(j-i>1){
int m=(i+j)>>>1;
if(target<arr[m]){
j=m;
}else{
i=m+1;
}
}
if(target==arr[i]){
return i;
}else{
return -1;
}
}
}