利用Java人实现一个二分法查找功能

  介绍

这期内容当中小编将会给大家带来有关利用Java人实现一个二分法查找功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

假如有一组数为3,12日,24日,36岁,55岁,68年,75年,88年要查给定的值24。可设三个变量方面,中期,最终分别指向数据的上界,中间和下界,中期=(前+)/2。

开始令前=0(指向3),结束=7(指向88),则中期=3(指向36)。因为mid> x,故应在前半段中查找。

令新的结束=mid-1=2,而前面=0不变,则新的中期=1。此时x>中期,故确定应在后半段中查找。

令新的面前=中期+ 1=2,而结束=2不变,则新的中期=2,此时(中期)=x,查找成功。如果要查找的数不是数列中的数,例如x=25,当第三次判断时,x>(中期),按以上规律、令=中期+ 1,即=3,前面出现front>最后的情况,

表示查找不成功。

例:在有序的有N个元素的数组中查找用户输进去的数据x。算法如下:

1。确定查找范围前=0,结束=N - 1,计算中项中期=(前+结束)/2 .

2 .若[中]=x或front>=结束,则结束查找;否,则向下继续。

3。若(中期)& lt; x,说明待查找的元素值只可能在比中项元素大的范围内,则把中期+ 1的值赋给前面,并重新计算,中期转去执行步骤2;若一(中期)在x,说明待查找的元素值只可能在比中项元素小的范围内,则把mid-1的值赋给结束,并重新计算,中期转去执行步骤2只

<强>时间复杂度

1。最坏情况查找最后一个元素(或者第一个元素)主定理T (N)=T (N/2) + O(1)所以T (N)=O (logn)

2。最好情况查找中间元素O(1)查找的元素即为中间元素(奇数长度数列的正中间,偶数长度数列的中间靠左的元素)

<强>空间复杂度:

S (N)=N

包com.bjpowernode.test;
  公开课BinarySearch {//查找次数
  静态int数;/* *
  * @param arg游戏
  */公共静态void main (String [] args) {//TODO自动生成方法存根
  int[]数组={1,2,3,4,5,6,7,8,9,10};
  system . out。println (searchRecursive(数组,0,数组。长度- 1,9));
  System.out.println(数);
  数=0;
  system . out。println (searchLoop(数组、9));
  System.out.println(数);
  }/* *
  *执行递归二分查找,返回第一次出现该值的位置
  *
  * @param数组
  *已排序的数组
  * @param开始
  *开始位置
  * @param结束
  *结束位置
  * @param findValue
  *需要找的值
  * @return值在数组中的位置,从0开始。找不到返回1
  */公共静态int searchRecursive (int[]数组,int, int,
  int findValue) {//如果数组为空,直接返回1,即查找失败
  如果(数组==null) {
  返回1;
  }
  数+ +;
  如果(开始& lt;=结束){//中间位置
  int中间=(开始+结束)/1;//中值
  int middleValue=https://www.yisu.com/zixun/array(中间);
  如果(findValue==middleValue) {//等于中值直接返回
  返回中间;
  }else if (findValue  

上述就是小编为大家分享的利用Java人实现一个二分法查找功能了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

利用Java人实现一个二分法查找功能