java学习之二分查找法代码
- * A:案例演示
- * 数组高级二分查找代码
- * B:注意事项
- * 如果数组无序,就不能使用二分查找。
- * 因为如果你排序了,但是你排序的时候已经改变了我最原始的元素索引
- package com.ifenx8.study.array;
- public class Demo_Binary {
- /**
- * A:案例演示
- * 数组高级二分查找代码
- * B:注意事项
- * 如果数组无序,就不能使用二分查找。
- * 因为如果你排序了,但是你排序的时候已经改变了我最原始的元素索引
- */
- public static void main(String[] args) {
- int[] arr = {11,22,33,44,55,66};
- System.out.println(getIndex(arr,44));
- System.out.println(getIndex(arr,22));
- System.out.println(getIndex(arr,88));
- }
- /*
- * 返回值类型 int
- * 参数列表 int[] arr, int value
- */
- public static int getIndex(int[] arr, int value){
- int min = 0;
- int max = arr.length –1;
- int mid = (max + min ) /2;
- while (arr[mid] != value) {//当中间值不等于给定的值时进行循环
- if (arr[mid] > value) {//如果给定的中间值大于要找的值
- max = mid – 1; //最大值的索引改变
- }else if(arr[mid] < value){//当给定的中间值小于要找的值
- min = mid + 1;//最小值的索引改变
- }
- mid = (max + min) /2;//每次对比中间值对应的索引都会改变
- if (max < min) {//如果最大值比最小值还小
- return –1;//结果返回-1
- }
- }
- return mid;//如果中间值等于给定要找的值就返回中间值
- }
- }
评论前必须登录!
注册