目录
一:插值查找的思想(二分查找属于插值查找的一种)
类似于二分查找,必须是有序序列的集合
二:二分查找和插值查找的公式
三:插值查找的代码
package sort;
import java.util.Arrays;
public class InsertSort {
public static void main(String[] args) {
int[] arr = new int[] {1, 2, 3, 4, 5, 6};
int i = select(arr, 0, arr.length - 1, 1);
System.out.println(i);
}
public static int select(int[] array, int left, int right, int searchVal) {
if(left > right || searchVal < array[0] || searchVal > array[array.length - 1]) {
return -1;
}
int mid = left + (right - left)*(searchVal - array[left])/(array[right] - array[left]);
int midvalue = array[mid];
if(searchVal > midvalue) {
return select(array, mid + 1, right, searchVal);
}else if(searchVal < midvalue) {
return select(array, left, mid -1, searchVal);
}else {
return mid;
}
}
}