zl程序教程

您现在的位置是:首页 >  后端

当前栏目

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

JAVA数组编程语言 使用 详解 查找 二分法
2023-06-13 09:20:43 时间

/**


* 二分法查找


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


*/


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

c