当前位置:网站首页>Interpolation lookup (two methods)
Interpolation lookup (two methods)
2022-07-07 08:37:00 【S dream chasing boy】
One 、 What is interpolation lookup
(1) Interpolation search algorithm is similar to binary search , The difference is that the interpolation lookup starts from The adaptive mid It's about Start looking for .
(2) Binary search mid The value is left and right The sum of the subscripts of the indicated sequence 1/2 namely mid = (left+right)/ 2.
(3) And interpolation search mid The value is calculated by formula , It is obvious from the formula mid The value of is not the middle position of the left and right indexes like dichotomy .
(4) Interpolation search formula ;3、int mid = low + (high - low) * (key - arr[low]) / (arr[high] - arr[low]) ;low Indicates the index on the left left,high Indicates the index on the right right. key Is the value you need to find .
Two 、 Features of interpolation search
(1) The search sequence must be ordered
(2) about Large amount of data And keywords Evenly distributed For the ordered sequence of , Interpolation search is faster .
(3) about Unevenly distributed For the ordered sequence of , This algorithm is not necessarily better than binary search .
3、 ... and 、 Code implementation
(1) Method 1 : recursive
public class InterpolationSearch {
public static void main(String[] args) {
int [] arr= {1,3,9,12,14,17,24,28,29};
int low = 0;
int high = arr.length-1;
int index = interpolationSearch(arr,low,high,17);
System.out.print(" Element found 17 The location of the for :"+index);
}
public static int interpolationSearch(int[] arr, int low, int high, int key) {
if (low > high) {
return -1;
}
int mid = low + (int) (1.0 * (key - arr[low]) / (arr[high] - arr[low]) * (high - low));
if (mid < low || mid > high) {
return -1;
}
if (arr[mid] == key) {
return mid;
} else if (key < arr[mid] ) {
return interpolationSearch(arr,low,mid - 1,key);
} else {
return interpolationSearch(arr,mid + 1, high,key);
}
}
}
Running results :

(2) Method 2 : iteration
public class InterpolationSearch {
public static void main(String[] args) {
int[] arr = { 1, 3, 9, 12, 14, 17, 24, 28, 29 };
int index = insertvaluesearch(arr, 17);
System.out.print(" Element found 17 The location of the for :" + index);
}
public static int insertvaluesearch(int arr[], int key) {
int low = 0;
int high = arr.length - 1;
while (low <= high) {
int mid = low + (high - low) * (key - arr[low]) / (arr[high] - arr[low]);
if (arr[mid] == key) {
return mid;
}
if (arr[mid] < key) {
low = mid + 1;
}
if (arr[mid] > key) {
high = mid - 1;
}
}
return -1;
}
}Running results :

边栏推荐
- The field value in Splunk subquery fuzzy matching CSV is*
- Leetcode 1984. Minimum difference in student scores
- 数据中台落地实施之法
- Open3d ISS key points
- Snyk dependency security vulnerability scanning tool
- Compilation and linking of programs
- Open3D ISS关键点
- redis故障处理 “Can‘t save in background: fork: Cannot allocate memory“
- Rsync remote synchronization
- IELTS review progress and method use [daily revision]
猜你喜欢

Virtual address space

rsync远程同步
![[Yu Yue education] higher vocational English reference materials of Nanjing Polytechnic University](/img/e2/519a5267cd5425a83434d2da65ebe6.jpg)
[Yu Yue education] higher vocational English reference materials of Nanjing Polytechnic University

Rapid integration of authentication services - harmonyos platform

23 Chengdu instrument customization undertaking_ Discussion on automatic wiring method of PCB in Protel DXP

Obsidan之数学公式的输入

SSM 整合

How to realize the high temperature alarm of the machine room in the moving ring monitoring system

Train your dataset with swinunet

PVTV2--Pyramid Vision TransformerV2学习笔记
随机推荐
说一个软件创业项目,有谁愿意投资的吗?
MES system is a necessary choice for enterprise production
Opencv learning note 3 - image smoothing / denoising
关于基于kangle和EP面板使用CDN
In go language, function is a type
Automatic upgrading of database structure in rainbow
Iptables' state module (FTP service exercise)
Data type - floating point (C language)
JS的操作
[kuangbin]专题十五 数位DP
Using helm to install rainbow in various kubernetes
详解华为应用市场2022年逐步减少32位包体上架应用和策略
南京商品房买卖启用电子合同,君子签助力房屋交易在线网签备案
Leetcode 1984. Minimum difference in student scores
Componentspace2022, assertions, protocols, bindings, and configuration files
Opencv learning note 5 - gradient calculation / edge detection
[paper reading] icml2020: can autonomous vehicles identify, recover from, and adapt to distribution shifts?
Compilation and linking of programs
POJ - 3784 Running Median(对顶堆)
Pvtv2--pyramid vision transformer V2 learning notes