package java常用算法;
import java.util.*;
public class 二分查找法 {
public static void main(String[] args) {
int arr[] = {1,4,5,7,9};
System.out.println("请输入要查找的数:");
int tmp = new Scanner(System.in).nextInt();
System.out.print("查找到的位置在:"+binarySearch2(arr,tmp));
}
/**
* 二分法(循环方式)*/
public static int binarySearch(int a[],int number){
int head = 0;
int end = a.length -1;
int mid = (head+end)/2;
while(head <= end){
if (number == a[mid]){
return mid;
}
else if (number > a[mid]){
head++;
mid = (head+end)/2;
}
else if (number < a[mid]){
end--;
mid = (head+end)/2;
}
}
return -1;
}
/**
* 二分法(递归方式)*/
public static int binarySearch2(int a[],int number){
return recusion(a,0,a.length-1,number);
}
public static int recusion(int a[],int head,int end,int number){
int mid = (head + end)/2;
if (head > end)
return -1;
if (a[mid] > number){
return recusion(a,head+1,end,number);
}
if (a[mid] < number){
return recusion(a,head,end-1,number);
}
else
return mid;
}
}
二分法查找
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 1、搜索都是建立在排好序的序列之上再搜索。(1)二分法搜索拿中间的数和要搜索的数比较。(2)排序的顺序要求是升序。...
- 假设有数组 totalArr ,每项的值都是递增的,后一个数组比前一个数组的值都大,现在希望在 totalArr ...
- 冒泡排序: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾...