二分查找的实现,探讨探讨思维与代码的一致性

展示两段代码,这两段代码可能并没有差别,都是二分查找的实现。


public class Main {public static void main(String[] args) {int[] i = {1,2,5,6,7,9,10};binarySearch(i,10);}public static void binarySearch (int[] nums ,int num){System.out.println(search(nums,0,nums.length-1,num));}public static int search(int[] nums,int start ,int end ,int num){if(start>end){return -1;}int mid =  (start+end)/2;if(nums[mid]==num){return mid;}else if(nums[mid]>num){return search(nums,start,mid-1,num);}else {return search(nums,mid+1,end,num);}}}
public class Main {public static void main(String[] args) {int[] i = {1,2,5,6,7,9,10};binarySearch(i,10);}public static void binarySearch (int[] nums ,int num){System.out.println(search(nums,0,nums.length-1,num));}public static int search(int[] nums,int start ,int end ,int num){if(start>end){return -1;}int mid =  (start+end)/2;if(nums[mid]==num){return mid;}else if(num<nums[mid]){return search(nums,start,mid-1,num);}else {return search(nums,mid+1,end,num);}}}

唯一的差别在于

else if(nums[mid]>num)  还是 else if(num<nums[mid])

我认为此处最应选择最易于理解的方式,理解二分查找,就是将num值和nums中的值进行比较。而不是nums中的值和num比较。

当小于号的出现,就会让我联想到接下来会查找左边。大于号的出现就会让我想到接下来查找右边。

一旦写成else if(nums[mid]<num),那么这个错误非常难以发现。

我看了十分钟,也没想出来哪里不对!

JAVA二分查找-探讨思维与代码的一致性相关推荐

  1. java 二分查找_JAVA 实现二分查找算法。我知道你会,但没你想象的那么简单

    二分查找算法定义:二分查找(binary search),也称折半搜索,是一种在 有序数组 中 查找某一特定元素 的搜索算法.搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结 ...

  2. java二分查找(含二分查找代码)

    目录 一:二分查找的条件 二:二分查找思想​​​​​​​ 三:二分查找代码(循环) 四:二分查找代码(递归) 一:二分查找的条件 1.1 必须是顺序存储结构 1.2 必须有序序列 二:二分查找思想 当 ...

  3. java 二分查找_计算机入门必备算法——二分查找法

    1.引言 笔者对于计算机的研究一直停滞不前,近期想对一些算法进行复习和进一步的研究,每天都会更新一个新的算法,算法有难有易,层层递进.不希望能学的有多么高深,只希望在一些最基本的算法上有编码的思路,或 ...

  4. java二分查找法视频_078-二分查找算法思路图解

    2.网上数据结构和算法的课程不少,但存在两个问题: 1)授课方式单一,大多是照着代码念一遍,数据结构和算法本身就比较难理解,对基础好的学员来说,还好一点,对基础不好的学生来说,基本上就是听天书了 2) ...

  5. java二分查找法_java算法之二分查找法的实例详解

    java算法之二分查找法的实例详解 原理 假定查找范围为一个有序数组(如升序排列),要从中查找某一元素,如果该元素在此数组中,则返回其索引,否则返回-1.通过数组长度可取出中间位置元素的索引,将其值与 ...

  6. 学习练习 java 二分查找法

    1 package com.hanqi; 2 3 import java.util.*; 4 5 public class Test5 { 6 7 public static void main(St ...

  7. java 二分查找 排序_java 冒泡排序 二分查找

    下面这个程序是先定义一个整型数组,然后将其中的元素反序赋值,再用冒泡排序进行排序以后用二分查找来查找其中是否有某个数,返回值为-1时表示这个数可能小于这个数组的最小值或大小这个数组的最大值,-2表示这 ...

  8. java 二分查找_Java数组之Arrays方法

    Java数组之Arrays方法,拉勾IT课小编为大家分析,JAVA数组的一些方法,提升开发水平,增强技术开发水平,不断提升个人的技术能力,在对于java开发领域,很多人都从基础做起. 1. 数组的工具 ...

  9. java 二分查找算法

    编程之美在于算法之美,先来看看二分查找的算法: 隐藏条件:二分查找必须是有序的,从小到大,或从大到小的排序才能进行二分查找,下面来看看代码: package com.cn.daming;public ...

最新文章

  1. show-busy-java-threads查找CPU占用高
  2. shell实例第23讲:每天定时备份nginx日志
  3. _Linux软件安装
  4. 数据采集标注、模型开发、部署落地,百度大脑全栈 AI 能力详解
  5. 大学生日记:我走出了农村 却永远走不进城市
  6. 怎样使用 ASP.NET Optimization Bundling压缩样式表和脚本
  7. HTML标签之间有什么区别 div 和span?/span
  8. 使用 golang-plugins 时要避免的事情
  9. 9.包装类的构造方法
  10. Mysql之1050错误解决办法
  11. php排序商品价格的功能,织梦做商城,按销量,价格等自定义模型字段排序列表解决方案...
  12. 信息通信类部分中文期刊投稿心得(转帖)
  13. 股票交易接口api的协议
  14. 深恶痛绝……残忍虐杀何时终止?
  15. 获取洞口边界及在墙上开洞(Revit二次开发)
  16. html5制作端午节游戏,意派Epub360怎么制作一个端午节H5小游戏页面?
  17. win7计算机启动修复,win7启动修复功能无法正常进入系统的解决方法
  18. 查找文件及文件内容查找
  19. 解决python利用pip安装第三方库失败的问题
  20. 屏幕距离和坐便转换工具_投影幕尺寸计算、投影距离计算、观影距离计算

热门文章

  1. ABI 与 API 的区别(应用程序二进制接口、应用程序编程接口)
  2. win10下如何查看电脑名称?查看计算机名(win+r -- cmd -- hostname)
  3. Haproxy + Pacemaker 实现高可用负载均衡(一)
  4. java substance下载,做出漂亮的Java界面–substance.jar的使用 | 学步园
  5. nginx启动成功,解决别的电脑访问不了页面的问题
  6. list中存储map的情况下,遍历list
  7. php登录注册连接数据库,利用PHP连接数据库——实现用户登录注册功能以及管理员对用户注...
  8. matlab中的imsod,Matlab eval用法
  9. android刷机教程视频,Android 设备刷机教程
  10. wprintf显示中文