java數(shù)據(jù)結(jié)構(gòu)之二分查找法 binarySearch的實(shí)例
java數(shù)據(jù)結(jié)構(gòu)之二分查找法 binarySearch的實(shí)例
折半查找法,前提是已經(jīng)排好序的數(shù)組才可查找
實(shí)例代碼:
public class BinarySearch {
int[] bArr;
public void setArr(int[] bArr){
this.bArr=bArr;
}
public static void main(String[] args) {
int arrLength=16;
int[] bArr=new int[arrLength];
System.out.println("數(shù)組:");
bArr=new int[]{72,31,13,94,85,27,64,71,19,55,49,40,8,70,17,13};
for(int i=0;i<arrLength;i++){
//bArr[i]=(int)(Math.random()*100);
System.out.print(bArr[i]+" ");
}
System.out.println();
System.out.println("排序:");
QuickSort qs=new QuickSort();
qs.setArr(bArr);
qs.quickSort(0, bArr.length-1);
for(int i=0;i<arrLength;i++){
System.out.print(bArr[i]+" ");
}
BinarySearch bs=new BinarySearch();
bs.setArr(bArr);
System.out.println();
System.out.println("查找:");
int val=bs.binarySearch(bArr.length-1, 0, 13);
System.out.println("查找:bArr["+val+"]="+13);
}
int binarySearch(int max,int min,int val){//有重復(fù)的取的是第一個(gè)出現(xiàn)的位置
int mid=(max+min)/2;
if(val==bArr[mid]){
return mid;
}
else if(val>bArr[mid]){
return binarySearch(max,mid,val);
}
else if(val<bArr[mid]){
return binarySearch(mid,min,val);
}
return -1;//查找失敗
}
}
如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
springMVC使用ajaxFailUpload上傳圖片的方法
這篇文章主要介紹了springMVC使用ajaxFailUpload上傳圖片的相關(guān)知識(shí),代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-06-06
java可變參數(shù)當(dāng)做數(shù)組處理的方法示例
這篇文章主要介紹了java可變參數(shù)當(dāng)做數(shù)組處理的方法,結(jié)合實(shí)例形式分析了java可變參數(shù)當(dāng)做數(shù)組處理相關(guān)原理、步驟與操作注意事項(xiàng),需要的朋友可以參考下2019-09-09
Spring?Cloud?Stream消息驅(qū)動(dòng)組件使用方法介紹
Spring?Cloud?Stream?消息驅(qū)動(dòng)組件幫助我們更快速,更方便,更友好的去構(gòu)建消息驅(qū)動(dòng)微服務(wù)的。當(dāng)時(shí)定時(shí)任務(wù)和消息驅(qū)動(dòng)的?個(gè)對(duì)比。消息驅(qū)動(dòng):基于消息機(jī)制做一些事情2022-09-09
基于SpringBoot實(shí)現(xiàn)圖片防盜鏈的兩種方式
出于安全和性能的考慮,我們希望服務(wù)器返回的圖片資源僅在指定網(wǎng)站內(nèi)展示,防止爬蟲(chóng)或其它站點(diǎn)直接引用圖片地址進(jìn)行下載或展示,進(jìn)而消耗服務(wù)器資源,所以本文給大家介紹了基于SpringBoot實(shí)現(xiàn)圖片防盜鏈的兩種方式,需要的朋友可以參考下2025-02-02
Java多線(xiàn)程揭秘之synchronized工作原理
synchronized算是多線(xiàn)程中非常常用的加鎖方式了,但很多人都不太理解其底層的工作原理。本篇文章博主用盡可能通俗易懂的方式來(lái)帶大家去看看synchronized究竟是怎么加鎖的2021-10-10
Mybatis控制臺(tái)打印SQL執(zhí)行信息的方法詳解
SQL性能監(jiān)控是一個(gè)程序必要的功能,通常我們可以使用數(shù)據(jù)庫(kù)自帶的客戶(hù)端工具進(jìn)行SQL性能分析,本章節(jié)只實(shí)現(xiàn)Mybatis執(zhí)行時(shí)對(duì)執(zhí)行SQL進(jìn)行攔截,控制臺(tái)打印執(zhí)行SQL包括參數(shù)、執(zhí)行方法以及執(zhí)行時(shí)間,需要的朋友可以參考下2024-11-11
解決springboot遇到autowire注入為null的問(wèn)題
這篇文章主要介紹了解決springboot遇到autowire注入為null的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03
解決SpringBoot中的Scheduled單線(xiàn)程執(zhí)行問(wèn)題
在一次SpringBoot中使用Scheduled定時(shí)任務(wù)時(shí),發(fā)現(xiàn)某一個(gè)任務(wù)出現(xiàn)執(zhí)行占用大量資源,會(huì)導(dǎo)致其他任務(wù)也執(zhí)行失敗,這篇文章主要介紹了SpringBoot中的Scheduled單線(xiàn)程執(zhí)行問(wèn)題及解決方法,需要的朋友可以參考下2022-06-06
Java下載遠(yuǎn)程服務(wù)器文件到本地(基于http協(xié)議和ssh2協(xié)議)
這篇文章主要介紹了Java下載遠(yuǎn)程服務(wù)器文件到本地的方法(基于http協(xié)議和ssh2協(xié)議),幫助大家更好的理解和使用Java,感興趣的朋友可以了解下2021-01-01

