栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Day569.插值查找 -数据结构和算法Java

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Day569.插值查找 -数据结构和算法Java

插值查找 1、介绍

类似二分查找,但找对应mid值的时候,采用的是自适应的方案


2、思路分析

3、代码实现
package com.achang.search;


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));
    }

    
    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、注意点

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/781146.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号