二分查找的两种基本方式

来源:互联网 发布:适合大学生的java项目 编辑:程序博客网 时间:2024/05/22 15:22

1.  二分查找

// 循环查找

public staticint binarySearch1(int a[], int target) {

//b为下限,c为上限

           int b= 0, c = a.length - 1;

           intmid = 0;

           if(b>c||a[b]>target||a[c]<target){

                    //不满足基本条件,返回-1

                    return-1;

           }

           while(b <= c) {

                    mid= (b + c) / 2;

                    if(target == a[mid])

                             //找到返回下标

                             returnmid;

                    elseif (target > a[mid])

                             b= mid + 1;

                    else

                             c= mid - 1;

           }

           //没找到,返回-1

           return-1;

}

2. 二分查找

// 折半查找,递归查找

public staticint binarySearch(int a[], int b, int c, int target) {

           intmid = (b + c) / 2;

           if (b> c||target<a[b]||target>a[c]) {

                    //不满足基本条件,返回-1

                    return-1;

           }else{

                    if(target> a[mid]) {

                              return binarySearch(a, mid + 1, c, target);

                    }

                    elseif(target < a[mid]) {

                              return binarySearch(a, b, mid - 1, target);

                    }

                    else{

                             //找到,返回下标

                             returnmid; 

                             }

           }

}

原创粉丝点击