插值查找+代码实现+注意事项
生活随笔
收集整理的這篇文章主要介紹了
插值查找+代码实现+注意事项
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
圖解
代碼實現
package com.atguigu.search;import java.util.Arrays;/*** @創建人 wdl* @創建時間 2021/3/23* @描述*/ public class InsertValueSearch {public static void main(String[] args) {int[] arr=new int[100];for (int i = 0; i < 100; i++) {arr[i]=i+1;}// System.out.println(Arrays.toString(arr));int index = insertValueSearch(arr, 0, arr.length - 1, 100);System.out.println("index="+index);}//編寫插值查找算法//說明:插值查找算法也需要數組是有序的/**** @param arr 數組* @param left 左邊的索引* @param right 右邊的索引* @param findVal 查找值* @return 如果找到,就返回對應的下標,如果沒有找到,返回-1*/public static int insertValueSearch(int[] arr,int left,int right,int findVal){//注意findVal<arr[0]||findVal>arr[arr.length-1]必須需要,否則我們得到的mid可能越界if(left>right||findVal<arr[0]||findVal>arr[arr.length-1]){return -1;}//求出midint mid=left+(right-left)*(findVal-arr[left])/(arr[right]-arr[left]);int midVal=arr[mid];if(findVal>midVal){//說明應該向右邊遞歸查找return insertValueSearch(arr,mid+1,right,findVal);}else if(findVal<midVal){//說明應該向左邊遞歸查找return insertValueSearch(arr,left,mid-1,findVal);}else {return mid;}}}注意事項
總結
以上是生活随笔為你收集整理的插值查找+代码实现+注意事项的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 特步是中国品牌吗(特步是哪个国家的什么档
- 下一篇: 又一个资源下载圣地寻找圣地 RMVB 下