java實現的二分法查詢
package com.gui.erfen;
public class erfenSearch {
/**
* 二分查詢
*/
public static void main(String[] args) {
int[] a = new int[] { 3, 11, 34, 56, 72, 88, 90, 110 };
int oneTarget = 72;
int twoTarget = 50;
int oneResult = buggyBinarySearch(a, oneTarget);
int twoResult = buggyBinarySearch(a, twoTarget);
System.out.println("要查詢的元素" + oneTarget + "在陣列中的下標為:" + oneResult);
System.out.println("要查詢的元素" + twoTarget + "在陣列中的下標為:" + twoResult
+ (twoResult == -1 ? ",該元素在陣列中不存在" : ""));
}
public static int buggyBinarySearch(int[] a, int target) {
// 進行二分法查詢的前提是數字已經排好序的,並且升序。
int low = 0;
int high = a.length - 1;
while (low <= high) {
int mid = (low + high) / 2;// 存在經典的bug
int midVal = a[mid];
if (midVal < target)
low = mid + 1;
else if (midVal > target)
high = mid - 1;
else
return mid;
}
return -1;
}
}
public class erfenSearch {
/**
* 二分查詢
*/
public static void main(String[] args) {
int[] a = new int[] { 3, 11, 34, 56, 72, 88, 90, 110 };
int oneTarget = 72;
int twoTarget = 50;
int oneResult = buggyBinarySearch(a, oneTarget);
int twoResult = buggyBinarySearch(a, twoTarget);
System.out.println("要查詢的元素" + oneTarget + "在陣列中的下標為:" + oneResult);
System.out.println("要查詢的元素" + twoTarget + "在陣列中的下標為:" + twoResult
+ (twoResult == -1 ? ",該元素在陣列中不存在" : ""));
}
public static int buggyBinarySearch(int[] a, int target) {
// 進行二分法查詢的前提是數字已經排好序的,並且升序。
int low = 0;
int high = a.length - 1;
while (low <= high) {
int mid = (low + high) / 2;// 存在經典的bug
int midVal = a[mid];
if (midVal < target)
low = mid + 1;
else if (midVal > target)
high = mid - 1;
else
return mid;
}
return -1;
}
}
相關文章
- 二分法查詢(遞迴實現)遞迴
- python查詢演算法的實現-二分法Python演算法
- java實現折半查詢。Java
- 陣列的查詢(搜尋):線性查詢和二分法查詢陣列
- 五、二分法查詢
- Access查詢實現Mysql的 limit 查詢MySqlMIT
- GO -冒泡 二分法查詢Go
- java實現Hbase中的查詢(一)Filter方式JavaFilter
- Python 實現二分法快速查詢Python
- Java實現遞迴查詢樹結構Java遞迴
- JVM系列(四):java方法的查詢過程實現JVMJava
- 查詢演算法之二分法演算法
- Java 列舉查詢並不拋異常的實現Java
- SSH:hiberate實現資料的查詢(單查詢和全查詢)
- Java實現二分查詢演算法Java演算法
- 實現 MyBatis 流式查詢的方法MyBatis
- Elasticsearch 查詢in 和 not in 的實現方式Elasticsearch
- 正確的折半查詢實現
- 查詢賬單功能的實現
- 面試:Java 實現查詢旋轉陣列的最小數字面試Java陣列
- 查詢演算法集:順序查詢、二分查詢、插值查詢、動態查詢(陣列實現、連結串列實現)演算法陣列
- MYSQL SQLServer分頁查詢的實現MySqlServer
- mybatis學習 - 多表查詢的實現MyBatis
- Connect by實現樹查詢的妙用
- 使用mybatis example 和 java 8的特性來實現多表關聯且帶有查詢條件的查詢MyBatisJava
- 【演算法資料結構Java實現】折半查詢演算法資料結構Java
- BST查詢結構與折半查詢方法的實現與實驗比較
- indexdb實現分頁查詢Index
- mysql多表查詢如何實現MySql
- 折半查詢(C++實現)C++
- mysql實現隨機查詢MySql隨機
- 實驗七: 查詢演算法的實現演算法
- Laravel Query Builder 複雜查詢案例:子查詢實現分割槽查詢 partition byLaravelUI
- 如何實現查詢介面的所有實現類
- 實現二叉搜尋樹的新增,查詢和刪除(JAVA)Java
- java-用SSH框架實現將查詢的資訊分頁顯示Java框架
- 二分法查詢介紹及例項詳解
- MYSQL INNODB中hash查詢表的實現MySql