Java JDK 二分法 分析demo(推荐)
程序员文章站
2023-01-07 14:18:37
如下所示:
public class test
{
public static void main(string[] args)
{...
如下所示:
public class test { public static void main(string[] args) { long[] arr = new long[100000]; for(int i =0;i<100000;i++) { arr[i] = (long) i; } system.out.println(binarysearch(arr, 3l)); comparable midval = (comparable) 2l;; system.out.println(midval.compareto(2l)); } private static int binarysearch(long[] arr, long l) { return binarysearch0(arr,0,arr.length,l); } private static int binarysearch0(object[] a, int fromindex, int toindex, object key) { int low = fromindex; int high = toindex - 1; while (low <= high) { int mid = (low + high) >>> 1; comparable midval = (comparable) a[mid]; int cmp = midval.compareto(key); if (cmp < 0) low = mid + 1; else if (cmp > 0) high = mid - 1; else return mid; // key found } return -(low + 1); // key not found. } }
算法:当数据量很大适宜采用该方法。采用二分法查找时,数据需是有序不重复的。 基本思想:假设数据是按升序排序的,对于给定值 x,从序列的中间位置开始比较,如果当前位置值等于 x,则查找成功;若 x 小于当前位置值,则在数列的前半段中查找;若 x 大于当前位置值则在数列的后半段中继续查找,直到找到为止。
以上这篇java jdk 二分法 分析demo(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
推荐阅读
-
Java日期时间API系列8-----Jdk8中java.time包中的新的日期时间API类的LocalDate源码分析
-
Java JDK 二分法 分析demo(推荐)
-
基于JDK1.8,Java容器源码分析
-
【Java】JDK源码分析——Boolean
-
[转]Java7中的ForkJoin并发框架初探(中)——JDK中实现简要分析
-
互联网架构-Java8集合框架源码分析-041:纯手写Jdk7HashMap集合框架
-
Java容器类源码分析之Iterator与ListIterator迭代器(基于JDK8)
-
java源码分析---Double类(JDK14)
-
Java集合——HashMap底层实现与原理源码分析——JDK1.8
-
分析了解JDK1.8版本的Java集合HashMap的put()方法