首页 > 编程知识 正文

编程实现二分查找算法,二分法查找java

时间:2023-05-04 20:34:24 阅读:128891 作者:4383

一、思维方式要一分为二查找,必须在有索引的有序序列集合上操作。 首先,二分搜索需要维持左中右三个索引。 现在,假设有升序序列,首先序列的第一位为左索引,最后为右索引。 将左右平均作为中索引,将每次取出的中索引的数量与搜索对象进行比较。 如果中索引的元素小于目标表的元素,则搜索大于中索引的搜索空间,并将中索引加1分配给左索引。 需要重复以上比较操作直到目的表或左索引大于右索引

二、代码1 .循环版本/** *常规循环方式下,* @param arr目标数组* @param e目标值* @return则返回下标,未找到则返回负数*/publicstaticintbibility 相当于wile(low=high ) (/或) high low )/2,比特运算效率高的mid=) high low ) 1; if(earr[mid] ) high=mid - 1; elseif(earr[mid] ) low=mid 1; else返回mid; }返回- (low 1; } 2.递归版本/** *递归方式二分搜索* @param arr目标数组* @param fromIndex搜索开始下标* @param endIndex搜索结束下标* @param e目标元素* @return搜索结束publicstaticintbinarysearch (int [ ] arr,int fromIndex,int endIndex,if ) fromindex=endindex )返回int e的if (earr [ }elseif(earr[mid] ) returnbinarysearch(arr,mid 1,endIndex,e ); else {返回mid; } }返回- 1; (三、测试publicstaticvoidmain (string [ ] args ) int [ ] arr={ 1,3,7,8,11,15,23 }; system.out.println (二进制搜索(arr,3 ); system.out.println (二进制搜索(arr,33 ); system.out.println (二进制搜索(arr,0,arr.length-1,3 ) ); system.out.println (二进制搜索(arr,0,arr.length-1,33 ) ); } 输出结果:

' c :program filesJavaJDK1.8.0_ 192binJava.exe ' .1- 81-1 processfinishedwithexitcode 0

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。