代码编织梦想

1、插值查找:实现的是利用公式进行,更好地调整靠近查找目标值

公式:

left +(right -left) *(findVal-arr[left])/ (arr[right]-arr[left])


import java.util.Arrays;
/*
插值查找
 */

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;

        }*/
//        int[] arr = {1,5,7,16,99,100};
        int[] arr = {1,8,10,89,89,1000,1234};

//        System.out.println(Arrays.toString(arr));
        int index = insertValueSearch(arr,0,arr.length-1,1000);
        System.out.println("index = "+index);



    }
    // 编写插值查找算法
    // 要求数组也是有序的
    public static int insertValueSearch(int[] arr,int left,int right,int findVal){
        System.out.println("查找次数");
        if(left>right || findVal <arr[0] || findVal >arr[arr.length-1]){

            return -1;
        }
        int 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;
        }


    }
}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/vintind/article/details/128713655

数据结构-顺序表基本操作的实现(含全部代码)_lady_killer9的博客-爱代码爱编程_数据结构顺序表代码

今天起开始编写数据结构中的各种数据结构及其算法的实现。 主要依据严蔚敏版数据结构教材以及王道数据结构考研辅导书。 今天是线性表中的顺序表的实现,主要实现函数如下,读者有需要可以评论,我可以适当加几个。 CreateList(SqList &L,int n) 参数:顺序表L,顺序表长度n 功能:创建长度为的顺序表 时间复杂度:O(n)InitL

图解!24张图彻底弄懂九大常见数据结构!-爱代码爱编程

​数据结构想必大家都不会陌生,对于一个成熟的程序员而言,熟悉和掌握数据结构和算法也是基本功之一。数据结构本身其实不过是数据按照特点关系进行存储或者组织的集合,特殊的结构在不同的应用场景中往往会带来不一样的处理效率。 常用的数据结构可根据数据访问的特点分为线性结构和非线性结构。线性结构包括常见的链表、栈、队列等,非线性结构包括树、图等。数据结构种类繁多,本

数据结构,计算机网络,数据库,计算机组成原理,操作系统有哪些好的网课值得推荐?-爱代码爱编程

大家好,我是小林哥。 作为自学CS过来的老学长,看过中国mooc、b站、网易云课堂很多视频,期间踩了不少坑,这次掏心掏肺前来跟分享下,网上的资源是免费的,但是找到质量好的是需要时间成本的! 数据结构,计算机网络,数据库,计算机组成原理,操作系统这些在大学期间一定要掌握好来,因为现在互联网大厂面试都爱考察这些内容,一句话,计算机基础,yyds! 可能大

数据结构:八种数据结构大全!-爱代码爱编程

数据结构 1.1 数据结构概述 数据结构是计算机存储、组织数据的方式;通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构的优良将直接影响着我们程序的性能;常用的数据结构有:数组(Array)、栈(Stack)、队列(Queue)、链表(Linked List)、树(Tree)、图(Graph)、堆(Heap)、散列表(Hash)等;

《算法和数据结构》算法篇-爱代码爱编程

前言   我大学的时候比较疯狂,除了上课的时候,基本都是在机房刷题,当然,有时候连上课都在想题目,纸上写好代码,一下课就冲进机房把代码敲了,目的很单纯,为了冲排行榜,就像玩游戏一样,享受霸榜的快感。  当年主要是在 「 杭电OJ 」 和 「 北大OJ 」 这两个在线平台上刷题,那时候还没有(「 LeetCode 」、「 牛客 」、「 洛谷 」

学习数据结构有什么用?-爱代码爱编程

当我们遇到一个实际问题时,首先需要解决两件事: (1)如何将数据存储在计算机中; (2)用什么方法和策略解决问题。 前者是数据结构,后者是算法。只有数据结构没有算法,相当于只把数据存储到计算机中,而没有有效的方法去处理,就像一幢只有框架的烂尾楼;若只有算法,没有数据结构,就像沙漠里的海市蜃楼,只不过是空中楼阁罢了。 数据是一切能输入计算机中的信息的

线性数据结构之队列(queue)_lingering fear的博客-爱代码爱编程

一.队列(Queue) 队列是一种用来存储数据的数据结构 , 与链表和栈类似 , 数据到达的次序是队列的关键 , 类似于生活中我们在排队购买东西时 , 第一个人是队首 , 最后一个人是队尾 , 第一个人先买到东西后离开 ,

数据结构—笔记整理—初识数据结构_vim_飞鱼的博客-爱代码爱编程

学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程。 目录 数据结构初定义 常用数据结构 这 8 种数据结构有什么区别呢? ①、数组 ②、链表 ③、栈 ④、队列 ⑤、树 ⑥、堆 ⑦、图 ⑧、哈希表 数据结构 集合结构(非线性结构) 线性结构 数组 线性表 存储结构 模式匹配 二叉树

java基础学习 day34(stringbuilder,链式编程)-爱代码爱编程

1. StringBuilder概述 StringBuilder可以看作是一个容器,创建之后里面的内容是可变的作用:提高字符串的操作效率 例如: String s1 = “aaa”; String s2 = “bbb”;