JAVA顺序查找、二分查找
程序员文章站
2022-03-13 22:51:08
...
/*
* 顺序查找
* T(n)=O(n)
* S(n)=O(1)
*/
public class TestSearch01 {
public static void main(String[] args){
int[] scoreArr = {89,45,78,78,45,100,98,86,100,65};
int score = 100;
int index = search(scoreArr,score);
if(index==-1){
System.out.print("该分数不存在");
}else{
System.out.print(score+"的索引是"+index);
}
}
public static int search(int[] scoreArr,int score){
for(int i=0;i<scoreArr.length;i++){
if(scoreArr[i]==score){
return i;
}
}
return -1;
}
}
二分查找
public class TestBinarySearch {
public static void main(String[] args){
int[] array = {1,2,3,4,5,6,7,8,9,10};
int key = 6;
int index1 = binary1(array,key);
if(index1==-1){
System.out.print("该分数不存在");
}else{
System.out.println(key+"的索引是"+index1);
}
}
/*
* 不使用递归的二分查找
* T(n)=O(logn)
* S(n)=O(1)
*
*/
public static int binary1(int[] array,int key){
int low = 0;
int high = array.length-1;
while(low<=high){
int mid = (low+high)/2;
if(key==array[mid]){
return mid;
}else if(key<array[mid]){
high=mid-1;
}else{
low=mid+1;
}
}
return -1;
}
/*
* 使用递归查找
* T(n)=O(logn)
* S(n)=O(logn)
*
*/
public static int dbinary2(int[] array,int key){
int low = 0;
int high = array.length-1;
return dbinary2(array,key,low,high);
}
public static int dbinary2(int[] array,int key,int low ,int high){
if(low>high){
return -1;
}
int mid = (low+high)/2;
if(key==array[mid]){
return mid;
}else if(key<array[mid]){
return dbinary(array, key, low, mid-1);
}else{
return dbinary(array, key, mid+1, high);
}
}
}
上一篇: 利用JS生成博文目录及CSS定制博客
下一篇: 顺序查找以及二分查找