失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > java 二分查找_Java二分法查找

java 二分查找_Java二分法查找

时间:2023-02-24 16:02:11

相关推荐

java 二分查找_Java二分法查找

1 假设有一个数组[1, 3, 5, 6, 23, 300],要从中找到23

2 有多种方法完成这个任务

(1)我们可以从小到大按顺序一个一个的对比,直到找到目标数字,或者反过来

(2)从中间开始查找,判断大小,如果要查找的数大于中间的数,接着取后一半查找,如果要查找的数小于中间的数,就去前一半查找,一次类推,也就是二分法查找

3 使用二分法查找的目的是减少查找次数,缩短查找时间

4 上代码

public class Demo01 {public static void main(String[] args) {int[] array = {23, 1, 3, 300, 5, 6};Demo01.m1(array, 5);}public static void m1(int[] array, int number) {Arrays.sort(array); // 升序排序int begin = 0; // 数组的第一个索引int end = array.length - 1; // 数组的最后一个索引while (begin <= end) {int middle = (begin + end) / 2;if (number > array[middle]) {begin = middle + 1;} else if (number < array[middle]) {end = middle - 1;} else {System.out.println(number + " 存在,索引为 " + middle);return;}}System.out.println("没有找到 " + number);}}

5 代码讲解

示例数组[1, 3, 5, 6, 23, 300]数组必须是有序的,一般都是升序排序,使用Arrays类的静态方法sort(),先对无序的数组进行排序循环查找的条件是begin要小于等于end,如果begin大于end,说明没有找到这个数,结束循环 number与中间的索引处的数进行对比,如果number比array[middle]大,就将middle加1,作为新的begin,如果number比array[middle]小,就将middle减1,作为新的end

关于二分法查找就讲到这里,如有纰漏,欢迎指正,感激不尽,谢谢!

如果觉得《java 二分查找_Java二分法查找》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。