当前位置:网站首页>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 :

边栏推荐
- XCiT学习笔记
- 为什么要选择云原生数据库
- 【无标题】
- 2-3查找樹
- [Yu Yue education] higher vocational English reference materials of Nanjing Polytechnic University
- Rsync remote synchronization
- redis故障处理 “Can‘t save in background: fork: Cannot allocate memory“
- All about PDF crack, a complete solution to meet all your PDF needs
- JS的操作
- Rainbow 5.7.1 supports docking with multiple public clouds and clusters for abnormal alarms
猜你喜欢

Analyzing the influence of robot science and technology development concept on Social Research

Arm GIC (IV) GIC V3 register class analysis notes.

国标GB28181协议视频平台EasyGBS新增拉流超时配置

About using CDN based on Kangle and EP panel

路由信息协议——RIP

Compilation and linking of programs

Practice of combining rook CEPH and rainbow, a cloud native storage solution

Virtual address space

21 general principles of wiring in circuit board design_ Provided by Chengdu circuit board design

调用华为游戏多媒体服务的创建引擎接口返回错误码1002,错误信息:the params is error
随机推荐
Coquette data completes the cloud native transformation through rainbow to realize offline continuous delivery to customers
MySQL introduction - crud Foundation (establishment of the prototype of the idea of adding, deleting, changing and searching)
Analysis of maker education in innovative education system
Merge sort and non comparison sort
更改当前文件夹及文件夹下文件日期shell脚本
IELTS review progress and method use [daily revision]
XCiT学习笔记
Opencv learning note 4 - expansion / corrosion / open operation / close operation
Analyzing the influence of robot science and technology development concept on Social Research
Rsync remote synchronization
Low success rate of unit test report
Using helm to install rainbow in various kubernetes
数据库存储---表分区
POJ - 3784 running medium
2-3 lookup tree
Are you holding back on the publicity of the salary system for it posts such as testing, development, operation and maintenance?
POJ - 3616 Milking Time(DP+LIS)
PVTV2--Pyramid Vision TransformerV2学习笔记
关于基于kangle和EP面板使用CDN
Snyk dependency security vulnerability scanning tool