java 算法二分查找和折半查找
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è)計(jì)模式之適配器模式(Adapter模式)介紹
這篇文章主要介紹了Java設(shè)計(jì)模式之適配器模式(Adapter模式)介紹,本文講解了為何使用適配器模式、如何使用適配器模式等內(nèi)容,需要的朋友可以參考下2015-03-03
Java調(diào)用UniHttp接口請(qǐng)求失敗的三種解決策略
在當(dāng)今數(shù)字化時(shí)代,不管是內(nèi)部系統(tǒng)之間還是跟外部系統(tǒng)的對(duì)接,接口調(diào)用已成為軟件開發(fā)中不可或缺的一部分,本文主要介紹了Java調(diào)用UniHttp接口請(qǐng)求失敗的三種解決策略,希望對(duì)大家有所幫助2025-09-09
Java實(shí)現(xiàn)本地語(yǔ)音識(shí)別與熱點(diǎn)檢測(cè)詳解
隨著語(yǔ)音交互技術(shù)的發(fā)展,如何高效地處理用戶的語(yǔ)音輸入成為許多應(yīng)用的重要課題,下面我們來聊聊如何使用java實(shí)現(xiàn)本地語(yǔ)音識(shí)別與熱點(diǎn)檢測(cè),并集成阿里云智能語(yǔ)音服務(wù)吧2025-05-05
詳解idea從git上拉取maven項(xiàng)目詳細(xì)步驟
這篇文章主要介紹了詳解idea從git上拉取maven項(xiàng)目詳細(xì)步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
Java使用代理進(jìn)行網(wǎng)絡(luò)連接方法示例
這篇文章主要介紹了Java使用代理進(jìn)行網(wǎng)絡(luò)連接方法示例,內(nèi)容十分詳細(xì),需要的朋友可以參考下。2017-09-09
Java使用NioSocket手動(dòng)實(shí)現(xiàn)HTTP服務(wù)器
本篇文章主要介紹了Java使用NioSocket手動(dòng)實(shí)現(xiàn)HTTP服務(wù)器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-05-05
通過Java實(shí)現(xiàn)RSA加密與驗(yàn)證的方法詳解
RSA是一種非對(duì)稱加密算法,是目前廣泛應(yīng)用于加密和數(shù)字簽名領(lǐng)域的一種加密算法,本文主要講述如何通過Java實(shí)現(xiàn)RSA加密與驗(yàn)證,應(yīng)用場(chǎng)景為與其他平臺(tái)對(duì)接接口時(shí),通過RSA加密和解密驗(yàn)證請(qǐng)求的有效性,在對(duì)接時(shí)雙方互換公鑰,需要的朋友可以參考下2023-12-12

