java 算法二分查找和折半查找
更新時(shí)間:2017年05月19日 17:02:39 投稿:lqh
這篇文章主要介紹了java 算法二分查找與折半查找的相關(guān)資料,需要的朋友可以參考下
java 算法二分查找與折半查找
折半查找 :首先數(shù)組是已經(jīng)排好序的
實(shí)例代碼:
package com.hao.myrxjava; /** * 折半查找 :首先數(shù)組是已經(jīng)排好序的 * * @author zhanghaohao * @date 2017/5/15 */ public class HalfDivision { /** * 循環(huán)實(shí)現(xiàn) * * @param array 排好序的數(shù)組 * @param value 查找的值 * @return value在array的位置 */ public static int halfDivision(int value, int[] array) { if (array == null || array.length == 0) throw new NullPointerException("array is null"); int low = 0; int high = array.length - 1; int mid = (low+high)/2; while (array[mid] != value) { if (array[mid] > value) high = mid - 1; else low = mid + 1; if (low > high) return -1; mid = (low+high)/2; if (array[mid] == value) return mid; } return mid; } /** * 遞歸實(shí)現(xiàn) * * @param array 排好序的數(shù)組 * @param value 查找的值 * @param low 查找的起始位置 * @param high 查找的末尾位置 * @return value在array的位置 */ public static int halfDivision(int value, int[] array, int low, int high) { if (low > high) return -1; int mid = (low + high) / 2; if (array[mid] == value) return mid; else if (array[mid] > value) return halfDivision(value, array, low, mid - 1); else if (array[mid] < value) return halfDivision(value, array, mid+1, high); return -1; } }
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
java實(shí)現(xiàn)簡(jiǎn)單TCP聊天程序
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡(jiǎn)單TCP聊天程,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07Java編程線程同步工具Exchanger的使用實(shí)例解析
這篇文章主要介紹了Java編程線程同步工具Exchanger的使用實(shí)例解析,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-02-02Java的Cglib動(dòng)態(tài)代理實(shí)現(xiàn)方式詳解
這篇文章主要介紹了Java的Cglib動(dòng)態(tài)代理實(shí)現(xiàn)方式詳解,CGLIB是強(qiáng)大的、高性能的代碼生成庫,被廣泛應(yīng)用于AOP框架,它底層使用ASM來操作字節(jié)碼生成新的類,為對(duì)象引入間接級(jí)別,以控制對(duì)象的訪問,需要的朋友可以參考下2023-11-11Maven插件構(gòu)建Docker鏡像的實(shí)現(xiàn)步驟
這篇文章主要介紹了Maven插件構(gòu)建Docker鏡像的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10SpringBoot解決BigDecimal傳到前端后精度丟失問題
這篇文章將通過示例詳細(xì)為大家介紹SpringBoot如何解決BigDecimal傳到前端后精度丟失問題,文中的示例代碼講解詳細(xì),感興趣的可以了解一下2022-06-06Java 動(dòng)態(tài)代理與CGLIB詳細(xì)介紹
這篇文章主要介紹了 Java 動(dòng)態(tài)代理與CGLIB詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2017-02-02