您好,登錄后才能下訂單哦!
本篇文章為大家展示了java中怎么實(shí)現(xiàn)一個二分查找法算法,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
二分查找法有兩種實(shí)現(xiàn)方式while、遞歸方法實(shí)現(xiàn)
public class maxtest { public static void main(String[] args) { //###################二分查找法start###################//int[] arrays = {113,16,24,22,218,25,23,8,13,6,215,123,218,113,14,222,28,213,4,2,17,5,12,117,15,122,18,26,214,212,117,216}; int temporary; for (int j = 0; j < arrays.length-1; j++) { for (int i = 0; i < arrays.length; i++) { if (arrays.length-1 == i) { break; }else{ if (arrays[i] > arrays[i+1]) { temporary = arrays[i]; arrays[i] = arrays[i+1]; arrays[i+1] = temporary; } } } } for (int i = 0; i < arrays.length; i++) { System.out.print(arrays[i]+" "); } System.out.println("\n調(diào)用遞歸方法結(jié)果:"+binarySearch(arrays,0,arrays.length-1,24));//遞歸方法調(diào)用 System.out.println("\n調(diào)用while方法結(jié)果:"+binarySearch(arrays,24));//while方法調(diào)用//###################二分查找法start###################// } //二分查找法遞歸實(shí)現(xiàn)public static int binarySearch(int[] arrays, int start, int end,int des){ int mid=(start+end)/2; if (arrays[mid] == des) { return mid; } if (start >= end) { return -1; }else if (arrays[mid] < des) { return binarySearch(arrays, mid+1, end, des); }else if(arrays[mid] > des){ return binarySearch(arrays, start, mid-1, des); } return -1; } //二分查找法while實(shí)現(xiàn)public static int binarySearch(int[] arrays, int des){ int mid=arrays.length/2; if (arrays[mid] == des) { return des; }int low = 0; int high = arrays.length-1; while(low <= high) { int middle = (low + high)/2; if(des == arrays[middle]) { return middle; }else if(des <arrays[middle]) { high = middle - 1; }else { low = middle + 1; } } return -1; }
結(jié)果如下:
2 4 5 6 8 12 13 14 15 16 17 18 22 23 24 25 26 28 113 113 117 117 122 123 212 213 214 215 216 218 218 222 調(diào)用遞歸方法結(jié)果:14調(diào)用while方法結(jié)果:14
示意圖
上述內(nèi)容就是java中怎么實(shí)現(xiàn)一個二分查找法算法,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。