网站建设资讯

NEWS

网站建设资讯

Java中的二分查找是什么意思

本篇内容主要讲解“Java中的二分查找是什么意思”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java中的二分查找是什么意思”吧!

创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站设计、成都做网站、外贸网站建设、泸县网络推广、小程序定制开发、泸县网络营销、泸县企业策划、泸县品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供泸县建站搭建服务,24小时服务热线:18980820575,官方网址:www.cdcxhl.com

需求

对于一个有序的数组进行二分查找{1,8,10,89,1000,1234},输入一个数看看该数组是否存在此数,并求出下标,如果没有就提示”没有这个数据”。

思路分析

  1. 鸿蒙官方战略合作共建——HarmonyOS技术社区

  2. 首先确定该数组中间的下标 mid=(left+right)/2.

  3. 然后让需要查找的数findValue和arr[mid]比较,findValue >  arr[mid],说明要查找的数在arr[mid]的右边,因此向右递归.findValue <  arr[mid],说明要查找的数在arr[mid]的左边,因此向左递归.findValue == arr[mid],说明找打,就返回。

  4. 退出递归的条件找到就结束递归。递归完整个数组仍然没有找到findValue,需要结束递归,即当 left > right

代码案例

package com.xie.search;  import java.util.ArrayList; import java.util.Arrays; import java.util.List;  public class BinarySearch {     static int count = 0;      public static void main(String[] args) {         int[] arr = new int[102];         arr[0] = 1;         arr[1] = 1;         for (int i = 2; i < 102; i++) {             arr[i] = i;         }         List indexList = binarySearch(arr, 0, arr.length - 1, 1);         System.out.println("indexList = " + indexList);         System.out.println("查找次数:" + count);         /*         indexList = [1, 0]         查找次数:6          */     }      /**      * 二分查找,查找符合值得所有索引集合      *      * @param arr       数组      * @param left      左边索引      * @param right     右边索引      * @param findValue 查找的值      * @return 找到就返回所有索引的集合,没有就返回空      */     public static List binarySearch(int[] arr, int left, int right, int findValue) {         count++;         List indexList = new ArrayList();         //当left > right时,说明递归完毕         if (left > right) {             return new ArrayList();         }         int mid = (left + right) / 2;         int midVal = arr[mid];         if (findValue > midVal) {             //查找的值比中间值大,向右递归             return binarySearch(arr, mid + 1, right, findValue);         } else if (findValue < midVal) {             //查找的值比中间值小,向左递归             return binarySearch(arr, left, mid - 1, findValue);         } else {             //如果找到了,再向左扫描,将满足条件的加入indexList             int temp = mid - 1;             while (true) {                 if (temp < 0 || arr[temp] != findValue) {                     break;                 }                 indexList.add(temp);                 temp--;             }              //再向右扫描,将满足条件的加入indexList             temp = mid + 1;             while (true) {                 if (temp > right || arr[temp] != findValue) {                     break;                 }                 indexList.add(temp);                 temp++;             }             indexList.add(mid);             return indexList;         }     } }

到此,相信大家对“Java中的二分查找是什么意思”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


分享名称:Java中的二分查找是什么意思
本文网址:http://cdweb.net/article/jghjdj.html