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
- GO -冒泡 二分法查詢Go
- JVM系列(四):java方法的查詢過程實現JVMJava
- Java實現遞迴查詢樹結構Java遞迴
- SSH:hiberate實現資料的查詢(單查詢和全查詢)
- Java實現二分查詢演算法Java演算法
- 查詢演算法之二分法演算法
- 查詢賬單功能的實現
- 實現 MyBatis 流式查詢的方法MyBatis
- 面試:Java 實現查詢旋轉陣列的最小數字面試Java陣列
- 使用mybatis example 和 java 8的特性來實現多表關聯且帶有查詢條件的查詢MyBatisJava
- BST查詢結構與折半查詢方法的實現與實驗比較
- python實現查詢糾錯Python
- mysql多表查詢如何實現MySql
- indexdb實現分頁查詢Index
- 折半查詢(C++實現)C++
- 實驗七: 查詢演算法的實現演算法
- Laravel Query Builder 複雜查詢案例:子查詢實現分割槽查詢 partition byLaravelUI
- 實現二叉搜尋樹的新增,查詢和刪除(JAVA)Java
- 使用 NineData 實現備份集的實時查詢
- jeefast實現科目成績查詢AST
- PHP 實現二分查詢PHP
- [Hive]Hive實現抽樣查詢Hive
- 並查集java實現並查集Java
- 並查集-Java實現並查集Java
- C++,Java,Python,Javascript實現二分查詢演算法C++PythonJavaScript演算法
- Java ——MongDB 插入資料、 模糊查詢、in查詢Java
- 基於 MongoTemplate 實現MongoDB的複雜查詢MongoDB
- MySQL 查詢結果取交集的實現方法MySql
- 查詢皮膚中如何實現兩個 select 下拉框的關聯查詢?
- HTML + CSS + JS 利用郵編查詢 API 實現郵編查詢工具HTMLCSSJSAPI
- C# Winform ComboBox模糊查詢實現C#ORM
- django 動態查詢實現過程Django
- Spring Data JPA 實現聯表查詢Spring
- 如何實現引數級聯查詢
- 二分查詢(函式實現)函式