- public class BinarySearch {
- static int[] itns = new int[]{1,2,3,4,5,6,7,8,9,11,111,323,3443};//必须是有序的才可以
- public static void main(String[] args) {
- int num = binarySearch(itns,0,itns.length,324); // 递归实现
- num = binarySearch_(itns,3443); //while 实现
- System.out.println(num);
- }
- /** 递归
- * @param ints
- * @param low
- * @param high
- * @param key
- * @return
- */
- private static int binarySearch(int[] ints,int low,int high,int key) {
- if(low>=high){
- return -1;
- }else{
- int midle = (low+high )/2;
- if(ints[midle]==key){
- return midle;
- }
- else if(ints[midle]<key){
- return binarySearch(ints,midle+1,high,key);
- }else{
- return binarySearch(ints,low,midle-1,key);
- }
- }
- }
- /** 非递归
- * @param ints
- * @param key
- * @return
- */
- private static int binarySearch_(int[] ints,int key){
- int midle = ints.length /2;
- int low=0,high=ints.length;
- while (low<high) {
- midle = (low+high) / 2;
- if(ints[midle] == key){
- return midle;
- }else if(ints[midle] < key){
- low = midle+1;
- }else if(ints[midle] > key){
- high = midle-1;
- }
- }
- return -1;
- }
- }
java实现二分法查找
最新推荐文章于 2022-06-09 07:48:32 发布