活动地址:CSDN21天学习挑战赛

前言

已经进入八月份了,暑假也正式进入倒计时。本人前段时间在学习前端中移动端部分的微信小程序开发知识,也算勉勉强强能入门(因为没有前端三件套的基础,前端居然是从小程序入手的。正在准备补JavaScript语法知识,不然后面的uni-app框架真的学起来有点困难);下面计划复习数据结构与算法,正好借参加本次活动的机会,和群内一群大佬一起学习、打卡、创作,动力满满!下面开始正文:

文章目录

一、查找的基本概念

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 "查找失败,数组中不存在该元素!";}
}

执行结果

经典算法之顺序查找法相关推荐

  1. 经典算法之二分查找法(俗称基本二分搜索法)

    经典算法之二分查找法(俗称二分搜索法) 文章目录 经典算法之二分查找法(俗称二分搜索法) 前言 一.什么是二分查找法? 二.代码实现 总结 前言 就算法而言,我们主要学习的是数学+思维+逻辑+数据结构 ...

  2. 经典算法之顺序查找(Sequential Search)

    活动地址:CSDN21天学习挑战赛 学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩:迟一天就多一天平庸的困扰. 文章目录 1. 前言 2. 算法基本概念 4. 顺序查找 4.1 伪代码 4.2 ...

  3. 经典算法之折半查找法

    活动地址:21天学习挑战赛 目录 一. 算法 概述 算法过程 二.代码实践 三.复杂度分析 时间复杂度 空间复杂度 四.优缺点分析 优点 缺点 一. 算法 概述 折半查找( Binary Search ...

  4. 经典算法之折半插入排序法

    活动地址:21天学习挑战赛 文章目录 一.算法 1.算法概述 2.算法步骤 二.算法实践 1.Java代码 2.执行结果 三.复杂度分析 1.时间复杂度 2.空间复杂度 一.算法 1.算法概述 直接插 ...

  5. 【经典排序算法】二分查找法 (动图演示 + C 语言代码实现)

    [经典排序算法]二分查找法 (动图演示 + C 语言代码实现)   

  6. 经典算法之直接插入排序法

    活动地址:21天学习挑战赛 文章目录 一.插入排序的基本思想 二.直接插入排序法 1.算法步骤 2.排序过程 3.算法实现 4.复杂度分析 三.每日一练 解题思路 解题代码 一.插入排序的基本思想 每 ...

  7. 经典算法之希尔排序法(Java实现)

    活动地址:21天学习挑战赛 目录 一.算法 1.算法概述 2.基本思想 3.算法步骤 4.算法特点 二.算法实践 1.Java代码 2.执行结果 三.复杂度分析 1.时间复杂度 2.空间复杂度 一.算 ...

  8. 经典算法 之 折半查找 python实现

    ​ ​ 活动地址:CSDN21天学习挑战赛 折半查找 1.查找算法 基本概念 不同查找算法分类 2. 折半查找 伪代码 算法评价 3. 算法实践(Python) 折半查找 参考 1.查找算法 查找(S ...

  9. javascript数据结构与算法---检索算法(二分查找法、计算重复次数)

    javascript数据结构与算法---检索算法(二分查找法.计算重复次数) /*只需要查找元素是否存在数组,可以先将数组排序,再使用二分查找法*/ function qSort(arr){if (a ...

最新文章

  1. 先进先出算法(FIFO)——页面置换
  2. 2018.8.14-C++复习笔记总
  3. python的类与模块_Python类与模块属性
  4. vb.net2019- 目录
  5. ASP.NET服务器控件数据绑定总结
  6. shell对于字符串的操作
  7. php制图汉字,PHP用imageTtfText函数在图片上写入汉字
  8. 【LeetCode 629】K个逆序对数组
  9. 关于Django中JsonResponse返回中文字典编码错误的解决方案
  10. 60页论文综述深度学习优化方法,出自UIUC
  11. ios项目使用ProtocolBuffer
  12. Android中文API(134) —— Account
  13. 关于 创建网络套接字失败 10106
  14. 平稳时间序列以及MATLAB相关工具箱学习笔记
  15. win10没有realtek高清晰音频管理器_【微软】第49期分享:装完Win 10最新补丁数据没了!...
  16. android graphview使用与感受
  17. MAXScript概况
  18. 【熵系列-3】相对熵(或者 KL散度)
  19. js打折 (批量计算9折 8折 7折
  20. 仿Excel冻结单元格效果

热门文章

  1. 将STM32设置睡眠模式(使用中断唤醒)之小白学习笔记
  2. Cozmo机器人使用
  3. 爬取新浪网股票并实现界面化1.0(pyqt5)
  4. 把一个数组(列表)中的数据逆向反转,python
  5. 计算机辅助药物设计 牛彦,牛彦
  6. 电信说的几兆带宽和自己看到的下载/上传速度有什么关系?
  7. DataScience:数据生成之在原始数据上添加小量噪声(可自定义噪声)进而实现构造新数据(dataframe格式数据存储案例)
  8. access计算机实验报告,Access数据库实验报告
  9. 函数和lambda表达式
  10. go Iris 使用swagger