Day569.插值查找 -数据结构和算法Java
Posted 阿昌喜欢吃黄桃
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Day569.插值查找 -数据结构和算法Java相关的知识,希望对你有一定的参考价值。
插值查找
1、介绍
类似二分查找
,但找对应mid值
的时候,采用的是自适应
的方案
2、思路分析
3、代码实现
package com.achang.search;
/**
* @Author Achang
* @Date 2022/3/26 22:47
* 插值查找算法
**/
public class InsertValueSearch
public static void main(String[] args)
int[] arr = new int[100];
for (int i = 0; i < arr.length; i++)
arr[i] = i;
System.out.println(insertValueSearch(arr, 0, arr.length-1, 55));
/**
* 插值查找算法,要求数组有序
* @param arr 待查找数组
* @param left 左边索引
* @param right 右边索引
* @param findValue 查找的值
* @return 如果找到,返回对应的索引,找不到返回-1;
*/
public static int insertValueSearch(int[] arr,int left,int right,int findValue)
if (left > right || findValue < arr[0] || findValue > arr[arr.length-1]) return -1;
//求出mid,插值查找中自适应mid
int mid = left + (right - left) * (findValue - arr[left]) / (arr[right] - arr[left]);
int midValue = arr[mid];
if (findValue > midValue)
return insertValueSearch(arr,mid+1,right,findValue);//向右递归
else if (findValue < midValue)
return insertValueSearch(arr,left,mid-1,findValue);//向左边递归
else
return mid;
4、注意点
以上是关于Day569.插值查找 -数据结构和算法Java的主要内容,如果未能解决你的问题,请参考以下文章