【java】【插值查詢】
public class InsertValueSearch1 {
public static void main(String[] args) {
//插值查詢前提同樣是有序陣列
int [] arr = { 1,2,3,4,5,6,7 };
System.out.println(search(arr, 0, arr.length-1, -8));
}
public static int search( int [] arr, int left, int right, int findVal ) {
//值得注意的是:限定判斷一定要設定在最前,用以驅逐不合法資料
if( left > right || findVal > arr[arr.length-1] || findVal < arr[0] ) {
return -1;
}
//插值查詢,重點在公式
int mid = left +
(right - left) *
( findVal - arr[left] ) /
( arr[right] - arr[left] );
int midVal = arr[mid];
if( findVal > midVal ) {
return search(arr, mid+1, right, findVal);
}else if( findVal < midVal ) {
return search(arr, left, mid-1, findVal);
}else {
return mid;
}
}
}
相關文章
- 查詢演算法__插值查詢演算法
- 插值查詢演算法演算法
- 插值查詢的簡單理解
- C#演算法設計查詢篇之03-插值查詢C#演算法
- 演算法-查詢(線性、二分、插值、斐波那契)演算法
- SCSS #{} 插值CSS
- MATLAB一維插值和二維插值 比較Matlab
- Java列舉-通過值查詢對應的列舉Java
- 二、插值操作
- Java ——MongDB 插入資料、 模糊查詢、in查詢Java
- SQL 查詢中的 NULL 值SQLNull
- 求插值係數
- 插值技術研究
- c#-string 插值C#
- 391、Java框架46 -【Hibernate - 查詢HQL、查詢Criteria、查詢標準SQL】 2020.10.19Java框架SQL
- 陣列中查詢給定值陣列
- 查詢前90%的資料值
- 查詢oracle欄位預設值Oracle
- 如何在es中查詢null值Null
- mybatis配置:map查詢空值返回MyBatis
- win10系統如何查詢MTU值_win10系統查詢MTU值的方法Win10
- Java API之查詢文件JavaAPI
- Java 查詢演算法Java演算法
- 拉格朗日插值
- B樣條插值加速
- 九種常見二維插值方法及雙線性插值的理解
- Java 實現二分查詢(在 1-100 裡找到目標值)Java
- 洛谷P4781 【模板】拉格朗日插值(拉格朗日插值)
- Python 查詢演算法_眾裡尋他千百度,驀然回首那人卻在燈火闌珊處(線性、二分,分塊、插值查詢演算法)Python演算法
- Laravel ORM 中,根據關聯查詢的欄位值,對主查詢排名LaravelORM
- Java 查詢和高亮Word文字Java
- Java--String類查詢方法Java
- Swift 5 字串插值之美Swift字串
- scala實現球面插值(Slerp)
- 2.Vue插值表示式Vue
- Swift 5 字串插值-簡介Swift字串
- mysql查詢表中最小可用id值MySql
- 用HBase做高效能鍵值查詢?