陣列的查詢(搜尋):線性查詢和二分法查詢
package cn.com.ArrayTest;
import java.util.MissingFormatArgumentException;
/**
* @author LENOVO
* @date 2020/11/25 14:30
* @description 陣列的查詢(搜尋):線性查詢,二分查詢
* 二分查詢的查詢更加快一些,相比較於線性查詢,但是前提是二分法必須要是有序的陣列
*/
public class ArrayTest2 {
public static void main(String[] args) {
String[] arr = new String[]{"JJ", "DD", "MM", "BB", "GG", "AA"};
//遍歷
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + "\t");
}
System.out.println(); //換行
//線性查詢:
String dest = "BB"; // 查詢arr陣列的BB
//這裡定義一個布林型別的 true,如果沒有定義,下面直接“很遺憾···”的時候,無論找到或者沒找到都要輸出這句話
boolean isFlag = true;
//遍歷過程找一下有沒有BB
for (int i = 0; i < arr.length; i++) {
//這裡是String型別,所以使用equals來比較內容是否相同
if (dest.equals(arr[i])) {
System.out.println("找到了指定元素,位置為:" + i);
isFlag = false; //如果進來了就把之前定義好的true改為false
break;
}
}
if (isFlag) {//如果沒有進去過,就還是ture
System.out.println("很遺憾沒有找到哦!");
}
//二分查詢:前提條件是必須是有序的陣列,升序或者降序都沒關係
int[] arr2 = new int[]{-98, -34, -3, 0, 34, 45, 98, 234, 333}; //升序
int dest1 = 45;//要查詢的數指為 45 所以宣告一個變數
int head = 0; //初始的首索引
int end = arr2.length - 1;//初始的末索引
boolean isFlag1 = true;
while (head <= end) {
int middle = (head + end) / 2;// middle是中間索引值的意思
if (dest1 == arr2[middle]) {//要查詢的值 剛好等於中間值
System.out.println("找到了指定元素,位置為:" + middle);
isFlag1 = false;
break;
} else if (dest1 < arr2[middle]) { //升序情況下:中間值比要查詢的數大 ,那麼就是從新開始了頭是dest1,尾是中間值
end = middle - 1;
} else { //dest1 > arr2[middle]
head = middle + 1;
}
}
if (isFlag1) {
System.out.println("很遺憾沒有找到哦!");
}
}
}
相關文章
- 搜尋/查詢
- SQL查詢的:子查詢和多表查詢SQL
- MySQL之連線查詢和子查詢MySql
- 二維陣列查詢陣列
- mysql-分組查詢-子查詢-連線查詢-組合查詢MySql
- 陣列的主元素查詢陣列
- 離線查詢與線上查詢
- ubuntu 終端內查詢/搜尋Ubuntu
- 二分搜尋(折半查詢)
- 二維陣列中的查詢陣列
- mysql查詢結果多列拼接查詢MySql
- fastadmin中快速搜尋時執行查詢的欄位 預設查詢idAST
- Elasticsearch中的Term查詢和全文查詢Elasticsearch
- SSH:hiberate實現資料的查詢(單查詢和全查詢)
- oracle 精確查詢和模糊查詢Oracle
- mysql查詢語句5:連線查詢MySql
- 陣列中查詢給定值陣列
- 【JZOF】二維陣列中的查詢陣列
- MongoDB(12)- 查詢嵌入文件的陣列MongoDB陣列
- group by,having查詢 ”每**“的查詢
- 連線查詢
- 複雜查詢—子查詢
- 查詢——二分查詢
- MYSQL學習筆記25: 多表查詢(子查詢)[標量子查詢,列子查詢]MySql筆記
- Elasticsearch 結構化搜尋、keyword、Term查詢Elasticsearch
- 查詢陣列中第K大的元素陣列
- MYSQL A、B表陣列關聯查詢MySql陣列
- 【LeetCode-陣列】查詢大多數元素LeetCode陣列
- 【Java】陣列二分查詢元素Java陣列
- 五、二分法查詢
- oracle查詢語句查詢增加一列內容Oracle
- 查詢演算法__Fibonacci查詢演算法
- Elasticsearch複合查詢——boosting查詢Elasticsearch
- 排序和查詢排序
- Laravel 查詢資料庫欄位內容是 Json 陣列時的查詢語句Laravel資料庫JSON陣列
- mysql求交集:UNION ALL合併查詢,inner join內連線查詢,IN/EXISTS子查詢MySql
- oracle 連線查詢Oracle
- SQL連線查詢SQL