【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#演算法
- 查詢演算法集:順序查詢、二分查詢、插值查詢、動態查詢(陣列實現、連結串列實現)演算法陣列
- 演算法-查詢(線性、二分、插值、斐波那契)演算法
- java陣列回顧---線性查詢最大值最小值---二分查詢Java陣列
- 單連結串列的尾插,頭插,遍歷,查詢和插入
- SCSS #{} 插值CSS
- 二、插值操作
- MATLAB插值Matlab
- 01:查詢特定的值
- MATLAB一維插值和二維插值 比較Matlab
- Java列舉-通過值查詢對應的列舉Java
- 求插值係數
- 插值技術研究
- SQL 查詢中的 NULL 值SQLNull
- 查詢中空值null的查理Null
- pga/sga及元件值查詢元件
- 資料庫查詢配置值資料庫
- Java ——MongDB 插入資料、 模糊查詢、in查詢Java
- 數值計算 插值與擬合
- c#-string 插值C#
- B樣條插值加速
- 拉格朗日插值
- mybatis配置:map查詢空值返回MyBatis
- 如何在es中查詢null值Null
- 查詢前90%的資料值
- 陣列中查詢給定值陣列
- 使用 VLOOKUP、INDEX 或 MATCH 查詢值Index
- 查詢繫結變數的值變數
- 查詢oracle欄位預設值Oracle
- 九種常見二維插值方法及雙線性插值的理解
- win10系統如何查詢MTU值_win10系統查詢MTU值的方法Win10
- Swift 5 字串插值之美Swift字串
- Swift 5 字串插值-簡介Swift字串
- 插值演算法總結演算法
- CoffeeScript攻略3.8:字串插值字串