首页
学习
活动
专区
圈层
工具
发布

java中二分查找(折半查找)的写法

代码如下,其他的不多叙述,看注释即可 /** * 二分查找两种写法 */ package array; import java.util.Arrays; /** * * @author lizhongfeng..._李忠峰 * @fileinfo Test array ArrayDemo.java * @time 2015年9月12日 */ public class ArrayDemo { /** *...内置函数查找,不存在时返回的num= -插入位置-1 } // 写法① // 先判断中间值是不是key,如果不是再和中间值比较,循环知道找到或者循环结束; public static int halfSearch...key) { int max, min, mid; min = 0; max = arr.length - 1; mid = (max + min) / 2; // 循环判断要用到,所以要先计算,方法...- 1; } if (max < min) { return -1; } mid = (min + max) / 2; } return mid; } // 写法② // 先判断小的角标是不是比大的角标大

24520
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    二分查找的两种实现方法-【Java版】

    二分查找,又叫折半查找。给定一个数据,查看该数据是否在给定的数组中,如果存在,就返回这个数据在数组中的下标位置,如果不存在,则返回-1 g需要实现二分查找的前提是:待查找的数组是有序的。...二分查找的思路: 1:需要有个有序的数组 2:需要一个待查询的数据 3:先获取的数组的中间下标的值 4:拿着中间值和待查询数据进行比较 4.1:如果中间值小于待查数据,说明,待查找的数据在中间数据的右侧后半段...请看代码 一:使用while方案的: /**  * 二分查找的真实方法  * @param array     待查数组  * @param compartDate   比较的数据  * @return...; } 第二种方案:使用递归的 /**  * 使用递归方法的二分查找  * @param array             有序的待查找的数组  * @param compartDate       ...因此,折半查找方法适用于不经常变动而查找频繁的有序列表。

    32810

    Java实现的二分查找算法

    二分查找又称折半查找,它是一种效率较高的查找方法。...通过一次比较,将查找区间缩小一半。 折半查找是一种高效的查找方法。它可以明显减少比较次数,提高查找效率。但是,折半查找的先决条件是查找表中的数据元素必须有序。...折半查找法的优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。...可以考虑把两种方法(顺序查找和折半查找)结合起来,即取顺序查找简单和折半查找高效之所长,来达到提高效率的目的?实际上这就是分块查找的算法思想。...Java二分查找源码 public class BinarySearch { /** * 二分查找算法 * * @param srcArray

    72400

    二分查找的Java实现「建议收藏」

    目录 写在前面 二分查找的原理 代码实现 学习感想 写在前面 二分查找是一个很有趣的算法,可以很大程度的提升性能,比如待查询的数组或其他集合很大的时候,二分查找的威力就可以体现出来。...但是平时的工作中我们基本上不会去写二分查找,所以我觉得有必要写一篇博文来记录二分查找的学习。...二分查找的原理 所谓二分查找,其实就是获取一组有序数据的中间数据,判断其跟查询关键字的大小,然后得到新的查找区间,继续重复以上的操作,直到最后查询区间不存在或者查询到关键字的下标。...学习感想 其实如果对Java SDK的源码熟悉的话,会一眼看出上面的二分查找其实就是仿写的Arrays.java的binarySearch方法,下面是源码的二分查找 // Like public...最后说一下,二分查找这种我们平时并不会写出来用,因为SDK已经给我们提供了实现。但是我们应该在空闲时间多多关注一下Java源码的实现,毕竟这些都是编程届的巨人们的思想结晶。

    29620

    PHP二分查找算法的实现方法示例

    本文实例讲述了PHP二分查找算法的实现方法。分享给大家供大家参考,具体如下: 二分查找法需要数组是一个有序的数组 假设我们的数组是一个递增的数组,首先我们需要找到数组的中间位置....如果中间值大于我们的给定值,说明我们的值在中间位置之前,此时需要再次二分,因为在中间之前,所以我们需要变的值是结束位置的值,此时结束位置的值应该是我们此时的中间位置。...反之,如果中间值小于我们给定的值,那么说明给定值在中间位置之后,此时需要再次将后一部分的值进行二分,因为在中间值之后,所以我们需要改变的值是开始位置的值,此时开始位置的值应该是我们此时的中间位置,直到我们找到指定值...@param2 array $arr,要查找的数组 @param3 int $start,查找的起始位置 @param4 int $end,查找的结束位置 @return mixed,找到了返回位置,...没找到返回false */ function getValue4($num,$arr,$start = 0,$end = 100){ //采用二分法查找 $middle = floor(($end +

    37120

    【java 查找引用了指定方法的内容】

    欢迎关注微信公众号:数据科学与艺术 作者WX:superhe199 Java中可以使用以下方法来查找引用了指定方法的内容: 使用IDE的查找功能:大多数IDE都提供了查找功能,可以查找引用了指定方法的地方...使用命令行工具:可以使用工具如grep、ack或ag来在代码文件中搜索指定方法的引用。...例如,使用grep可以执行以下命令来查找所有引用了methodName方法的内容: grep -r "methodName" /path/to/source/directory 这将在指定的源代码目录下递归地搜索所有引用了...methodName方法的内容。...使用代码分析工具:有一些专门的代码分析工具可以用于查找引用了指定方法的代码。例如,可以使用静态代码分析工具如Checkstyle、PMD或FindBugs来执行静态分析,并找到引用了指定方法的代码。

    16810

    如何用Java实现树的遍历、查找和平衡操作?

    树是一种常见的数据结构,其中的节点通过边相互连接。在Java中,我们可以使用递归或迭代来实现树的遍历、查找和平衡操作。...下面将详细介绍如何使用Java实现树的前序遍历、中序遍历、后序遍历、层次遍历、查找操作和平衡操作。 一、树的表示方法 在Java中,我们可以使用节点类和指针或引用来表示树。...= null) { queue.offer(node.right); } } } 三、树的查找操作 树的查找操作是在树中按照特定条件查找某个节点。...下面是使用广度优先搜索实现的树查找操作: import java.util.LinkedList; import java.util.Queue; public TreeNode bfs(TreeNode...具体实现根据不同的平衡策略而定。 以上是树的遍历、查找和平衡操作在Java中的实现方法。你可以根据需要调用相应的方法来完成对树的操作。理解和掌握这些操作对于处理树结构的问题非常重要。

    46010

    Python中实现二分查找的2种方法?

    废话不多说,开始今天的题目: 问:Python中实现二分查找的2种方法? 答:在Python实现二分查找法有两种方法,分别用循环和递归方式。...二分查找法:搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较...注意如果要想使用二分查找,前提必须是元素有序排列 。 ?...下面分别来说说这两种方式: 1、循环方式 def binary_search_2(alist,item): """二分查找---循环版本""" n = len(alist) first...binary_search_2(a, 77) print(sorted_list_22) //False 2、递归方式 def binary_search(alist,item): """二分查找

    41530

    Java中实现的简单算法 && 计算二分查找次数

    1.排序与混排 Collections类中的sort方法可以对实现List的接口进行排序 List staff = new LinkedList(); // 这个方法假定元素实现了Comparable...接口 Collections.sort(staff); 如果采用其他方式对列表进行排序可以使用List接口的sort方法传入一个Comarable的一个对象 // java排序实现是把所有元素放入一个新列表之后列表进行排序...2.二分查找 && 计算二分查找平均查找长度 二分查找的思想就是,直接在数组中央查找所需要的元素,如果比中间元素小,在再数组前半部分查找中间位置然后比较。 ?...计算平均查找长度 java的binarySearch方法实现这个二分查找的算法,所查找的集合必须是排好序的,否则算法将返回错误的答案。...<=3); words.replaceAll(String::toLowerCase) 栈 java类库把Stack类扩展为Vector类,Vector可以让栈使用insert和remove方法

    70620

    二分查找(适应于无序数组的一种方法)

    二分查找(Binary Search)是一种在有序数组中查找某一特定元素的搜索算法。...例如在一个有序数组{1,2,3,4,5,6,7,8,9,10}中,我们要查找8的位置,就可以先比较其与5的大小关系,发现其大于5,然后就找6与10的中位数8,发现相等,那么8的位置也就找到了,二分查找做法大抵如此...二分查找的优点是查找速度快,仅需log2n次比较,其中n为数组长度。下面,我将详细介绍如何用C语言实现二分查找算法。...二分查找缺点就是必须要求的是一个有序数组,对于一个无序的数组就需要先处理成有序数组后再进行二分查找。 对于一个无序数组,我们可以通过冒泡排序和二分查找相结合的方法 首先,我们需要创建一个有序数组。...在实际应用中,二分查找算法可以大大提高查找效率,通过与冒泡排序的结合,也可以让二分查找的方法具有更多的创造力。

    28910

    java查找字符串中的字符_java – 查找字符串中最常见字符的更有效方法

    参考链接: Java程序查找一个字符的ASCII值 执行此操作的最快方法是计算每个字符的出现次数,然后取计数数组中的最大值.如果您的字符串很长,那么在循环字符串中的字符时,不会跟踪当前最大值,您将获得不错的加速...如果你的字符串主要是ASCII,那么count循环中的一个分支可以在低128字符值的数组或其余的HashMap之间进行选择,这应该是值得的.如果您的字符串没有非ASCII字符,分支将很好地预测.如果在ascii...return maxappearchar;  }  我没有充实代码,因为我没有做很多Java,所以IDK如果有一个容器,那么比HashMap get和put对更有效地执行insert-1-increment...这可能比你的2 ^ 16整数数组更好.但是,如果您只触摸此阵列的低128个元素,则可能永远不会触及大部分内存.分配但未触及的内存并没有真正伤害,或者耗尽RAM /交换.  ...但是,在末尾循环遍历所有65536个条目意味着至少读取它,因此操作系统必须对其进行软页面故障并将其连接起来.它会污染缓存.实际上,更新每个角色的最大值可能是更好的选择.

    1.5K30

    计算右侧小于当前元素的个数(二叉查找树&二分查找&归并排序逆序数总结)

    解题 2.1 二叉查找树 我的博客 二叉查找树 每个节点增加一个数据count(记录比这个节点小的元素个数) 如果新加入的节点小于当前节点cur,cur->count++ 从根节点root向下查找,满足条件则累加...最坏情况下,BST退化成链表,时间复杂度变成O(n2) class Node //树的节点 { public: int val; int count;//小于该节点的个数 Node *left,...if(n val) { //我比当前小 cur->count++; //比当前小的记录 +1 return insert(n,cur->left);//去左边子树里查找...2.2 二分插入 开辟一个空的数组,用于存放已排序的数据 将原数组,从右向左,二分插入至新数组,记录插入的位置(前面有多少小于我的) class Solution { public: vector...需要归并求解,但是归并排序过程中,数据下标变动了,需要建立一个下标数组 对下标数组idx进行排序(比较大小的时候用nums数组代入比较) 计算逆序数方法(只能取一种,不要同时用) 1、当前序数组写入时,

    1.1K30

    3分钟快速搞懂Java的桥接方法

    什么是桥接方法? Java中的桥接方法(Bridge Method)是一种为了实现某些Java语言特性而由编译器自动生成的方法。...什么时候生成桥接方法? 为了实现哪些Java语言特性会生成桥接方法?最常见的两种情况就是协变返回值类型和类型擦除,因为它们导致了父类方法的参数和实际调用的方法参数类型不一致。...在Java 1.5添加了对协变返回类型的支持,即子类重写父类方法时,返回的类型可以是子类方法返回类型的子类。...因为在JVM方法中,返回类型也是方法签名的一部分,而桥接方法的签名和其父类的方法签名一致,以此就实现了协变返回值类型。...如何查找桥接方法的实际方法 在Spring Framework中已经实现了查找桥接方法的实际方法的功能,就在spring-core模块中的BridgeMethodResolver类中,像这样直接使用就行了

    40950
    领券