java在数组中使用二分法查找详解编程语言

/**


* 二分法查找


*
使用二分法查找的前提数组已经排过序


*/


public class Demo4 {


    public static void main(String[] args) {


        int[] arr = { 3, 1, 8, 2, 9, 100, 33, 22, 11, 18, 14, 17, 15, 3 };


        // 使用Arrays.sort()排序


        Arrays.sort(arr);


        System.out.println(Arrays.toString(arr));


        // 返回结果


        //int index = brinarySearch(arr, 99);


        int index = brinarySearch_2(arr, 11);


        System.out.println(“index=” + index);

    }


    /*


     * 二分法查找一返回下标如果是-1就说明没有


     */


    public static int brinarySearch(int[] arr, int key) {// 数组和要查找的数


        int min = 0; // 最小的下标


        int max = arr.length – 1;// 最大的下标


        int mid = (min + max) / 2;// 中间的下标


        while (arr[mid] != key) {


            if (key > arr[mid]) { //比中间数还在


                min = mid + 1;   //最小的下标=中间下标加一


            } else if (key < arr[mid]) {//比中间数还小


                max = mid – 1;   //最大的下标=中间下标-1


            }


            if(max<min){


                return -1;


            }


            mid=(min+max)/2; //再次计算中间下标


        }         


        return mid;

    }


    /*


     * 二分法查找一返回下标如果是-1就说明没有


     */


    public static int brinarySearch_2(int[] arr, int key) {// 数组和要查找的数


        int min = 0; // 最小的下标


        int max = arr.length – 1;// 最大的下标


        int mid = (min + max) / 2;// 中间的下标 


        while(min<=max){


            if(key>arr[mid]){


                min=mid+1;


            }else if(key<arr[mid]){


                max=mid-1;


            }else{


                return mid;


            }


            mid=(min+max)/2;


        }


        //没找到


        return -1;

    }    


}

java在数组中使用二分法查找详解编程语言

转载请注明来源网站:blog.ytso.com谢谢!

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/14927.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论