返回顶部
首页 > 资讯 > 精选 >利用Java人实现一个二分法查找功能
  • 951
分享到

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

java二分法查找 2023-05-31 16:05:40 951人浏览 泡泡鱼
摘要

这期内容当中小编将会给大家带来有关利用Java人实现一个二分法查找功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。算法假如有一组数为3,12,24,36,55,68,75,88要查给定的值24.可设三个

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

算法

假如有一组数为3,12,24,36,55,68,75,88要查给定的值24.可设三个变量front,mid,end分别指向数据的上界,中间和下界,mid=(front+end)/2.  

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

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

令新的front=mid+1=2,而end=2不变,则新的mid=2,此时a[mid]=x,查找成功。如果要查找的数不是数列中的数,例如x=25,当第三次判断时,x>a[mid],按以上规律,令front=mid+1,即front=3,出现front>end的情况,

表示查找不成功。

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

确定查找范围front=0,end=N-1,计算中项mid=(front+end)/2。

若a[mid]=x或front>=end,则结束查找;否则,向下继续。

若a[mid]<x,说明待查找的元素值只可能在比中项元素大的范围内,则把mid+1的值赋给front,并重新计算mid,转去执行步骤2;若a[mid]>x,说明待查找的元素值只可能在比中项元素小的范围内,则把mid-1的值赋给end,并重新计算mid,转去执行步骤2。 

算法复杂度分析

时间复杂度

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

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

空间复杂度:

  S(n)=n

package com.bjpowernode.test;public class BinarySearch {  // 查找次数  static int count;    public static void main(String[] args) {    // TODO Auto-generated method stub    int[] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };    System.out.println(searchRecursive(array, 0, array.length - 1, 9));    System.out.println(count);    count = 0;    System.out.println(searchLoop(array, 9));    System.out.println(count);  }    public static int searchRecursive(int[] array, int start, int end,      int findValue) {    // 如果数组为空,直接返回-1,即查找失败    if (array == null) {      return -1;    }    count++;    if (start <= end) {      // 中间位置      int middle = (start + end) / 1;      // 中值      int middleValue = array[middle];      if (findValue == middleValue) {        // 等于中值直接返回        return middle;      } else if (findValue < middleValue) {        // 小于中值时在中值前面找        return searchRecursive(array, start, middle - 1, findValue);      } else {        // 大于中值在中值后面找        return searchRecursive(array, middle + 1, end, findValue);      }    } else {      // 返回-1,即查找失败      return -1;    }  }    public static int searchLoop(int[] array, int findValue) {    // 如果数组为空,直接返回-1,即查找失败    if (array == null) {      return -1;    }    // 起始位置    int start = 0;    // 结束位置    int end = array.length - 1;    while (start <= end) {      count++;      // 中间位置      int middle = (start + end) / 2;      // 中值      int middleValue = array[middle];      if (findValue == middleValue) {        // 等于中值直接返回        return middle;      } else if (findValue < middleValue) {        // 小于中值时在中值前面找        end = middle - 1;      } else {        // 大于中值在中值后面找        start = middle + 1;      }    }    // 返回-1,即查找失败    return -1;  }}

--结束END--

本文标题: 利用Java人实现一个二分法查找功能

本文链接: https://lsjlt.com/news/226847.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 利用Java人实现一个二分法查找功能
    这期内容当中小编将会给大家带来有关利用Java人实现一个二分法查找功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。算法假如有一组数为3,12,24,36,55,68,75,88要查给定的值24.可设三个...
    99+
    2023-05-31
    java 二分法查找
  • 怎么在Java中利用二叉查找树算法实现一个排序功能
    这期内容当中小编将会给大家带来有关怎么在Java中利用二叉查找树算法实现一个排序功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。具体如下:public class BinaryNode<T ext...
    99+
    2023-05-31
    java 二叉查找树 排序
  • java实现二分法查找
    什么是二分法查找:二分法也就是折半查找,在有序的数列中查找指定的元素,设定最小索引(low)和最大索引(height-1)还有中间值mid((low+height-1)/2),这种查找,如果中间值比指定元素小让low=mid+1,如果中间值...
    99+
    2015-07-23
    java入门 java 实现 二分法查找
  • 怎么利用java实现一个二分法算法
    这篇文章给大家介绍怎么利用java实现一个二分法算法,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。java 二分法算法1、前提:二分查找的前提是需要查找的数组必须是已排序的,我们这里的实现默认为升序2、原理:将数组分为...
    99+
    2023-05-31
    java 二分法算法 ava
  • 利用Java怎么实现一个分页查询并显示功能
    本篇文章为大家展示了利用Java怎么实现一个分页查询并显示功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。sql语句大概形式为:select * from table limit 开始索...
    99+
    2023-05-31
    java 分页查询 ava
  • java二分法查找怎么实现
    java二分法查找怎么实现BinarySearch二分法查找,顾名思义就是要将数据每次都分成两份然后再去找到你想要的数据,我们可以这样去想,二分法查找很类似与我们平时玩的猜价格游戏,当你报出一个价格时裁判会告诉你价格相对于真实值的高低,倘若...
    99+
    2014-09-02
    java教程 java 二分法
  • java如何实现二分法查找
    小编给大家分享一下java如何实现二分法查找,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!二分法查找//前提必须是在有序的条件下...
    99+
    2024-04-02
  • Java怎么实现二分法查找
    这篇文章主要讲解了“Java怎么实现二分法查找”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java怎么实现二分法查找”吧!二分法查找概述二分查找也称折半查找(Binary Search),...
    99+
    2023-07-02
  • 怎么在java中利用递归实现二分查找
    本篇文章给大家分享的是有关怎么在java中利用递归实现二分查找,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Java有哪些集合类Java中的集合主要分为四类:1、List列表:...
    99+
    2023-06-14
  • 怎么在java中利用二分查找实现迭代
    怎么在java中利用二分查找实现迭代?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布式系统...
    99+
    2023-06-14
  • 利用java如何实现一个DataSource功能
    本篇文章为大家展示了利用java如何实现一个DataSource功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。  DataSource 对象所表示的物理数据源的连接。作为 Driver...
    99+
    2023-05-31
    java datasource dat
  • 利用Java怎么实现一个画板功能
    今天就跟大家聊聊有关利用Java怎么实现一个画板功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。基本的思路是这样的:画板实现大致分三部分:一是画板界面的实现,二是画板的监听以及画图...
    99+
    2023-05-31
    java ava
  • 利用mybatis如何实现一个一对多查询功能
    利用mybatis如何实现一个一对多查询功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1.需求分析:在开发中会遇到这样一个问题,查询订单信息,级联查询出用户信息和订单明...
    99+
    2023-05-31
    mybatis 一对多查询
  • java查找功能如何实现
    在Java中实现查找功能可以利用循环和条件判断来遍历数据并进行比较。下面是一个示例代码,演示如何在一个整数数组中查找指定的数字并返回...
    99+
    2023-09-26
    java
  • 利用Android怎么实现一个二维码生成功能
    利用Android怎么实现一个二维码生成功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在project的build.gradle添加如下代码:allproj...
    99+
    2023-05-31
    android roi
  • java 中二分法查找的应用实例
    java 中二分法查找的应用实例二分查找的前提是:数组有序 注意:mid的动态变化,否则出错!!!  实例代码:public class BiSearch { public static void main(St...
    99+
    2023-05-31
    java 二分法 ava
  • 利用Java如何实现一个二分插入排序
    这篇文章给大家介绍利用Java如何实现一个二分插入排序,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、折半插入排序(二分插入排序)将直接插入排序中寻找A[i]的插入位置的方法改为采用折半比较,即可得到折半插入排序算法...
    99+
    2023-05-31
    java 二分插入排序 ava
  • 利用java怎么实现一个倒计时功能
    这期内容当中小编将会给大家带来有关利用java怎么实现一个倒计时功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。代码如下:package timer;import java.util.Calendar;...
    99+
    2023-05-31
    java ava
  • 利用Java如何实现一个解析Json功能
    本篇文章给大家分享的是有关利用Java如何实现一个解析Json功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。首先准备一个JSON格式的字符串* String JsonStr...
    99+
    2023-05-31
    java json 解析
  • 利用Java实现一个短视频点赞功能
    这篇文章将为大家详细讲解有关利用Java实现一个短视频点赞功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。 这行代码是弹出点赞的时间为18s.18秒后发生了什么呢 ?继续看&nb...
    99+
    2023-05-31
    java ava 点赞
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作