Java顺序查找算法详解

目录
  • 一、查找的基本概念
    • 1.查找表
    • 2.关键字
    • 3.查找
    • 4.动态查找表与静态查找表
    • 5.平均查找长度
  • 二、顺序查找法
    • 1.概念
    • 2.实践

一、查找的基本概念

在讲顺序查找法之前先来认识一些关于查找的基本概念。

1.查找表

  • 由同一类型的数据元素(或记录)所构成的集合
  • 数据元素之间存在完全松散的关系
  • 非常灵活的数据结构

2.关键字

  • 关键字是数据元素(或记录)中某个数据项的值,可以用它标识一个数据元素(或记录)
  • 若关键字可以唯一地标识一个记录,则称之为主关键字
  • 反之,若用以识别若干记录的关键字称之为次关键字
  • 注意,当元素只有一个数据项时,其关键字即为该数据元素的值

3.查找

  • 查找是根据给定的某个值,在查找表中确定一个关键字等于给定值的记录或者数据元素
  • 若表中存在该记录则查找成功,可返回整个记录的信息或者指示该记录在查找表中的位置
  • 若表中不存在该记录则查找失败,可返回一个“空”记录或者“空”指针

4.动态查找表与静态查找表

  • 若在查找的过程中对表做修改操作(如插入或删除),则相应的表称之为动态查找表,否则为静态查找表
  • 即动态查找表的表结构本身是在查找的过程中所动态生成的,即在创建表时,对于给定值,若表中存在其关键字所对应的记录,则查找成功返回;否则插入关键字等于给定值的记录

5.平均查找长度

  • 为确定记录在查找表中的位置,需要和给定值进行比较的关键字个数的期望值,称为查找算法在查找成功时的平均查找长度(Average Searche Length, ASL)
  • 由于查找算法的基本运算是关键字之间的比较操作,故可以使用ASL来衡量评估查找算法的性能
  • 也可以采用一种很直观的评估方法——程序执行所消耗的时间。文章传送门

二、顺序查找法

1.概念

顺序查找(Sequential Search)的查找过程为:从表的一端开始,依次将记录的关键字和给定的值进行比较,若某记录的关键字和给定值相等,则为查找成功;反之,若扫描整个表之后,仍然未找到关键字和给定值相等的记录,则为查找失败。

2.实践

在给定的无序数组中查找给定的值

public class DayOne {
    public static void main(String[] args) {
        int []a={8,7,45,99,65,23,21,100};
        int key1=23;
        int key2=666;
        DayOne dayone=new DayOne();
        System.out.print("数组元素:");
        for(int i=0;i<a.length;i++){
            System.out.print(a[i]+" ");
        }
        System.out.println();
        System.out.println("查找key1的结果:"+dayone.search(a,key1));
        System.out.println("查找key2的结果:"+dayone.search(a,key2));
    }
    public  String search(int []a,int key){
        //初始化变量
        int i=0;
        //扫描整个数组
        while(i<a.length){
            //将数组元素一一与给定值key进行比较
            if(key==a[i])
                return "查找成功! "+key+"是数组的第"+(i+1)+"个元素";//匹配成功则返回
            i++;//当前未匹配成功将索引下标i后移一位继续比对
        }
        //如果循环遍历已经结束了还未找到给定值key则表明数组中不存在该值,查找失败
        return "查找失败,数组中不存在该元素!";
    }
}

执行结果

到此这篇关于Java顺序查找算法详解的文章就介绍到这了,更多相关Java顺序查找内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java经典算法汇总之顺序查找(Sequential Search)

    a)原理:顺序查找就是按顺序从头到尾依次往下查找,找到数据,则提前结束查找,找不到便一直查找下去,直到数据最后一位. b)图例说明: 原始数据:int[]a={4,6,2,8,1,9,0,3}; 要查找数字:8 找到数组中存在数据8,返回位置. 代码演示: import java.util.Scanner; /* * 顺序查找 */ public class SequelSearch { public static void main(String[] arg) { int[] a={4,6,2

  • Java顺序查找算法详解

    目录 一.查找的基本概念 1.查找表 2.关键字 3.查找 4.动态查找表与静态查找表 5.平均查找长度 二.顺序查找法 1.概念 2.实践 一.查找的基本概念 在讲顺序查找法之前先来认识一些关于查找的基本概念. 1.查找表 由同一类型的数据元素(或记录)所构成的集合 数据元素之间存在完全松散的关系 非常灵活的数据结构 2.关键字 关键字是数据元素(或记录)中某个数据项的值,可以用它标识一个数据元素(或记录) 若关键字可以唯一地标识一个记录,则称之为主关键字 反之,若用以识别若干记录的关键字称之

  • Java数据结构之图的路径查找算法详解

    目录 前言 算法详解 实现 API设计 代码实现 前言 在实际生活中,地图是我们经常使用的一种工具,通常我们会用它进行导航,输入一个出发城市,输入一个目的地 城市,就可以把路线规划好,而在规划好的这个路线上,会路过很多中间的城市.这类问题翻译成专业问题就是: 从s顶点到v顶点是否存在一条路径?如果存在,请找出这条路径. 例如在上图上查找顶点0到顶点4的路径用红色标识出来,那么我们可以把该路径表示为 0-2-3-4. 如果对图的前置知识不了解,请查看系列文章: [数据结构与算法]图的基础概念和数据

  • java 中归并排序算法详解

    java 中归并排序算法详解 归并排序算法,顾名思义,是一种先分再合的算法,其算法思想是将要排序的数组分解为单个的元素,每个元素就是一个单个的个体,然后将相邻的两个元素进行从小到大或从大到小的顺序排序组成一个整体,每个整体包含一到两个元素,然后对相邻的整体继续"合"并,因为每个整体都是排过序的,因而可以采用一定的算法对其进行合并,合并之后每个整体包含三到四个元素,继续对相邻的整体进行合并,直到所有的整体都合并为一个整体,最终得到的整体就是将原数组进行排序之后的结果. 对于相邻的整体,其

  • Java实现最小生成树算法详解

    目录 定义 带权图的实现 Kruskal 算法 二叉堆 并查集 实现算法 Prim 算法 定义 在一幅无向图G=(V,E) 中,(u,v) 为连接顶点u和顶点v的边,w(u,v)为边的权重,若存在边的子集T⊆E且(V,T) 为树,使得 最小,这称 T 为图 G 的最小生成树. 说的通俗点,最小生成树就是带权无向图中权值和最小的树.下图中黑色边所标识的就是一棵最小生成树(图片来自<算法第四版>),对于权值各不相同的连通图来说最小生成树只会有一棵: 带权图的实现 在 <如何在 Java 中实

  • JS二分查找算法详解

    二分法查找,也称折半查找,是一种在有序数组中查找特定元素的搜索算法.查找过程可以分为以下步骤: (1)首先,从有序数组的中间的元素开始搜索,如果该元素正好是目标元素(即要查找的元素),则搜索过程结束,否则进行下一步. (2)如果目标元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半区域查找,然后重复第一步的操作. (3)如果某一步数组为空,则表示找不到目标元素. 参考代码: // 非递归算法 function binary_search(arr, key) { var low = 0,

  • Java实现权重随机算法详解

    目录 应用场景 本文目标 算法详解 权重比例 Java 实现 参考 应用场景 客户端负载均衡,例如 Nacos 提供的客户端负载均衡就是使用了该算法 游戏抽奖(普通道具的权重很高,稀有道具的权重很低) 本文目标 Java 实现权重随机算法 算法详解 比如我们现在有三台 Server,权重分别为1,3,2.现在想对三台 Server 做负载均衡 Server1 Server2 Server3 weight weight weight 1 3 2 权重比例 我们算出每台 Server 的权重比例,权

  • Java数据结构顺序表用法详解

    目录 1.什么是顺序表 2.顺序表的基本功能和结构 3.顺序表基本功能的实现和解析 1.判断线性表是否为空 2.获取指定位置的元素 3.向线性表表添加元素 4.在位置i处插入元素 5.删除指定位置的元素,并返回该元素 6.查找t第一次出现的位置 7.手动扩容方法 1.什么是顺序表 在程序中,经常需要将一组(通常是同为某个类型的)数据元素作为整体管理和使用,需要创建这种元素组,用变量记录它们,传进传出函数等.一组数据中包含的元素个数可能发生变化(可以增加或删除元素). 对于这种需求,最简单的解决方

  • Java求最小生成树的两种算法详解

    目录 1 最小生成树的概述 2 普里姆算法(Prim) 2.1 原理 2.2 案例分析 3 克鲁斯卡尔算法(Kruskal) 3.1 原理 3.2 案例分析 4 邻接矩阵加权图实现 5 邻接表加权图实现 6 总结 介绍了图的最小生成树的概念,然后介绍了求最小生成树的两种算法:Prim算法和Kruskal算法的原理,最后提供了基于邻接矩阵和邻接链表的图对两种算法的Java实现. 阅读本文需要一定的图的基础,如果对于图不是太明白的可以看看这篇文章:Java数据结构之图的原理与实现. 1 最小生成树的

  • python查找与排序算法详解(示图+代码)

    目录 查找 二分查找 线性查找 排序 插入排序 快速排序 选择排序 冒泡排序 归并排序 堆排序 计数排序 希尔排序 拓扑排序 总结 查找 二分查找 二分搜索是一种在有序数组中查找某一特定元素的搜索算法.搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束:如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较.如果在某一步骤数组为空,则代表找不到.这种搜索算法每一次比较都使搜索范围缩小一半. # 返回 x 在 ar

  • Java搜索与图论之DFS和BFS算法详解

    目录 DFS和BFS简介 DFS数字排序 DFS皇后排序 DFS树的重心 BFS走迷宫 BFS八数码 BFS图层次 本次我们介绍搜索与图论篇中DFS和BFS,我们会从下面几个角度来介绍: DFS和BFS简介 DFS数字排序 DFS皇后排序 DFS树的重心 BFS走迷宫 BFS八数码 BFS图层次 DFS和BFS简介 首先我们先来介绍一下DFS和BFS: DFS:深度优先遍历算法,我们在进行算法运算时,优先将该路径的当前路径执行完毕,执行完毕或失败后向上回溯尝试其他途径 BFS:广度优先遍历算法,

随机推荐