当前位置: 代码迷 >> 综合 >> java基础复习--数组的二分查找
  详细解决方案

java基础复习--数组的二分查找

热度:97   发布时间:2023-09-23 11:59:51.0

二分查找

package array;public class ArraySelect {/*** @Title: main* @Description: TODO(二分查找----数组有序)* @param @param args 设定文件* @return void 返回类型* @throws*/public static void main(String[] args) {// 定义一个数组(有序)int[] arr = { 11, 22, 33, 44, 55, 66, 77 };int index = getIndex(arr, 33);System.out.println("index:" + index);// 假如这个元素不存index = getIndex(arr, 333);System.out.println("index:" + index);}private static int getIndex(int[] arr, int value) {int max = arr.length - 1;//定义最大最小索引int min = 0;// 计算出中间索引int mid = (max + min) / 2;// 拿中间索引的值和要查找的值进行比较while (arr[mid] != value) {if (arr[mid] > value) {max = mid - 1;} else if (arr[mid] < value) {min = mid + 1;}// 加入判断if (min > max) {return -1;}mid = (max + min) / 2;}return mid;}
}
注意:当数组本身是无序的,不可通过以下方法进行查找
int[] arr = { 24, 69, 80, 57, 13 };// 先排序bubbleSort(arr);// 后查找int index = getIndex(arr, 80);System.out.println("index:" + index);
因为排序已经改变了数组元素原始的索引