package com.example.demo;import java.util.Arrays;/*** 二分法查找*/
public class BinarySearch {public static void main(String[] args) {int[] arr = {30, 20, 20, 50, 10, 80, 9, 7, 12, 100, 40, 8};//二分法查找需要是一个有序的数组Arrays.sort(arr);//  sort方法底层使用的的快速排序 DualPivotQuicksort.sort(a, 0, a.length - 1, null, 0, 0);System.out.println(Arrays.toString(arr));System.out.println(binarySearch(arr, 8));System.out.println(binarySearchByRecursion(arr, 0, arr.length - 1, 8));}/*** 二分法查找的非递归实现** @param arr   需要查找的数组* @param value 查找的值* @return 返回value的index*/private static int binarySearch(int[] arr, int value) {int low = 0;int high = arr.length - 1;while (low <= high) {int mid = low + (high - low) / 2;if (value == arr[mid]) {return mid;}if (value > arr[mid]) {low = mid + 1;}if (value < arr[mid]) {high = mid - 1;}}return -1;//没有找到返回-1}/*** 递归方法实现二分查找法.** @param arr  数组* @param low  数组第一位置* @param high 最高* @param key  要查找的值.* @return 返回值.*/private static int binarySearchByRecursion(int[] arr, int low, int high, int key) {if (low <= high) {int mid = (low + high) / 2;if (key == arr[mid])return mid;else if (key < arr[mid])//移动low和highreturn binarySearchByRecursion(arr, low, mid - 1, key);else if (key > arr[mid])return binarySearchByRecursion(arr, mid + 1, high, key);}return -1;}
}
复制代码

转载于:https://juejin.im/post/5cef73af5188251f633a8a8d

二分法查找的java简单实现相关推荐

  1. 二分法查找的JAVA程序

    二分法查找的JAVA程序 class HalfSearch {public static void main(String[] args) {int []arr={11,15,18,45,65,77, ...

  2. java 二分法查找数组,Java二分法查找数组元素下标

    package pers.ly.javase.algorithm; import java.util.Arrays; /** * 二分法查找 * @author: Lu Yang * @date: 2 ...

  3. java二分法查找法算法_算法二:二分法查找(java语言)

    说明: 二分法查找 * 解析: * 一维数组,二分法查找:假如有一组数为1,2,3,4,5,6,7,8,9,10要查给定的值7. * 可设三个变量low,mid,high分别指向数据的前,中间和后,m ...

  4. Java二分法查找最大值

    Java二分法查找最大值 目录 1,二分法查找最大值的实现思路 2,二分法查找最大值的重点 3,二分法查找最大值java实现 代码: 结果: 4,另一种递归的实现: 总结: 二分法查找最大值,跟直接遍 ...

  5. Java 二分法查找

    二分法查找的步骤 1 查找前元素先排序 2 确定中间区域的位置mid=(low+high)/2 3 比较 如果等于要查找的值则直接返回,如果大于查找的值,那么则去小的部分查找每次则会减1 如果要查找的 ...

  6. Java的知识点18——数组存储表格数据、冒泡排序的基础算法、冒泡排序的优化算法、二分法查找

    数组存储表格数据 package cn.dym08; import java.util.Arrays; public class Test09 {public static void main(Str ...

  7. java二分法查找_java 中二分法查找的应用实例

    java 中二分法查找的应用实例 二分查找的前提是:数组有序 注意:mid的动态变化,否则出错!!! 实例代码: public class BiSearch { public static void ...

  8. java 二分法查找排序,插入排序,折半查找算法

    import java.util.*; /* *二分法排序和插入 */ class Main21 { public static void main(String[] args) { int[] ar ...

  9. java 程序题 二分法查找二维数组(Dichotomy)

    一个二分法查找二维数组的程序题 public class Search2DMatrix {public static void main(String[] args){int[][] matrix = ...

最新文章

  1. 兔子生兔子递归的理解
  2. 数据中心电气及自动化(一)
  3. 我使用的博客和通讯工具汇总
  4. PHP 捕获全局异常
  5. SpringSecurity集中式整合之加入jsp
  6. golang for循环的重新认识
  7. 计算与推断思维 六、可视化
  8. 快速读取内存文件-内存映射文件的方法
  9. idea配置Lua环境
  10. 关于setInterval和setTImeout中的this指向问题
  11. java deadlock oracle_【DEADLOCK】Oracle“死锁”模拟
  12. MESSAGE消息发送失败
  13. Windows 的 80 端口被 System 进程占用解决方案
  14. 无线通信基础知识10:数字通信之双工技术
  15. linux下仓库管理系统,[源码和文档分享]基于Linux的仓库管理系统
  16. python基础:sys模块
  17. matlab newton插值法,Matlab程序Newton插值函数
  18. linux给root权限命令,linux设置root权限命令
  19. 【BZOJ3197】[Sdoi2013]assassin 树同构+动态规划+KM
  20. 数字图像处理 检测护照图像中的机器可读区域

热门文章

  1. 13. Roman to Integer
  2. python3对接聊天机器人API
  3. linux使用.rpm包安装mysql
  4. 判断用户用手机访问还是用电脑访问网页
  5. 【leetcode刷题笔记】Sqrt(x)
  6. CodeSmith实用技巧(五):利用继承生成可变化的代码
  7. impala的工作原理的详解(图文)
  8. 软件测试个人感悟之测试用例的评审重点是什么?
  9. log添加 oracle redo_添加Redo log Member/Group-Oracle
  10. 前端基础到进阶(1):HTML基础入门