Java實(shí)現(xiàn)的兩種常見簡(jiǎn)單查找算法示例【快速查找與二分查找】
本文實(shí)例講述了Java實(shí)現(xiàn)的兩種常見簡(jiǎn)單查找算法。分享給大家供大家參考,具體如下:
前言:
查找是指從一批記錄當(dāng)中找出滿足制定條件的某一記錄的過(guò)程。
在平常的程序的編寫當(dāng)中很多時(shí)候時(shí)用得上的,這里簡(jiǎn)單介紹兩個(gè)查找算法
1. 快速查找:
這個(gè)是相當(dāng)簡(jiǎn)單的,以數(shù)組舉例,就用一個(gè)for循環(huán)去查找數(shù)組中需要查找的數(shù)據(jù)
例子:
public static boolean quickSearch(int a[], int x) {
boolean f = false;
int length = a.length;
int i;
for (i = 0; i < length - 1; i++) {
if (x == a[i]) {
f = true;
break;
}
}
return f;
}
2. 二分法(折半)查找:
二分法查找,其要求數(shù)據(jù)序列必須是呈線性結(jié)構(gòu)的,也就是說(shuō)數(shù)據(jù)序列必須是排過(guò)序的才能用二分法。
直接舉例(使用二分法的時(shí)候采用遞歸即可):
// 二分法方法一
public static boolean erFen(int a[], int low, int high, int x) {
boolean f = false;
if (low <= high) {
if (x < a[(low + high) / 2]) {
f = erFen(a, low, (low + high) / 2 - 1, x);
} else if (x > a[(low + high) / 2]) {
f = erFen(a, (low + high) / 2 + 1, high, x);
} else if (x == a[(low + high) / 2]) {
f = true;
}
}
return f;
}
// 二分法方法二
public static boolean erFen2(int a[], int x) {
boolean f = false;
int length = a.length;
int low = 0;
int high = length - 1;
int mid;
while (low <= high) {
mid = a[(low + high) / 2];
if (mid < x)
low = (low + high) / 2 + 1;
else if (mid > x)
high = (low + high) / 2 - 1;
else if (mid == x) {
f = true;
break;
}
}
return f;
}
更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。
相關(guān)文章
SpringBoot CommandLineRunner應(yīng)用啟動(dòng)后執(zhí)行代碼實(shí)例
本文將深入探討CommandLineRunner的工作原理、使用場(chǎng)景及最佳實(shí)踐,幫助開發(fā)者充分利用這一功能,構(gòu)建更加健壯的Spring Boot應(yīng)用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-04-04
通過(guò)java反射機(jī)制動(dòng)態(tài)調(diào)用某方法的總結(jié)(推薦)
下面小編就為大家?guī)?lái)一篇通過(guò)java反射機(jī)制動(dòng)態(tài)調(diào)用某方法的總結(jié)(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-07-07
FeignClientFactoryBean創(chuàng)建動(dòng)態(tài)代理詳細(xì)解讀
這篇文章主要介紹了FeignClientFactoryBean創(chuàng)建動(dòng)態(tài)代理詳細(xì)解讀,當(dāng)直接進(jìn)去注冊(cè)的方法中,一步步放下走,都是直接放bean的定義信息中放入值,然后轉(zhuǎn)成BeanDefinitionHolder,最后在注冊(cè)到IOC容器中,需要的朋友可以參考下2023-11-11
mybatis如何設(shè)置useGeneratedKeys=true
這篇文章主要介紹了mybatis如何設(shè)置useGeneratedKeys=true,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。2022-01-01
mybatis中映射文件(mapper)中的使用規(guī)則
這篇文章主要介紹了mybatis中映射文件(mapper)中的使用規(guī)則,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11
java實(shí)現(xiàn)微信點(diǎn)餐申請(qǐng)微信退款
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)微信點(diǎn)餐申請(qǐng)微信退款,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09
SpringBoot項(xiàng)目加入沖突動(dòng)態(tài)監(jiān)測(cè)算法的實(shí)現(xiàn)
沖突動(dòng)態(tài)監(jiān)測(cè)算法是一種網(wǎng)絡(luò)通信中的沖突檢測(cè)方法,適用于無(wú)線網(wǎng)絡(luò)或其他共享傳輸介質(zhì)的環(huán)境,本文主要介紹了SpringBoot項(xiàng)目加入沖突動(dòng)態(tài)監(jiān)測(cè)算法的實(shí)現(xiàn),感興趣的可以了解一下2023-09-09
如何使用Jackson和JSON Pointer查詢解析任何JSON節(jié)點(diǎn)
本文介紹了JSON Pointer是字符串表達(dá)式,可以非常方便解析復(fù)雜JSON節(jié)點(diǎn)值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09

