数据结构-查找-顺序查找法

article/2025/10/12 14:00:58

在数据处理的过程中,是否能在时间内查找到所需要的数据是一个相当值得重视的问题。所谓查找(search),指的是在数据文件中找出满足某些条件的记录。用以查找的条件称作为“键值(Key)”,就如同排序所用的键值一样。

常见的查找方法

根据数据量的大小,我们可以将查找分为内部查找和外部查找

  • 内部查找:数据量较小的文件可以一次性全部加载到内存中进行查找
  • 外部查找:数据量大的文件无法一次性加载到内存中处理,而需要使用辅助存储器来分次处理

如果从另一个角度来看,查找的技巧又可以分为“静态查找”和“动态查找”两种

  • 静态查找:指的是在查找过程中,查找的表格或者文件的内容不会被更改,例如符号表的查找就是一种静态查找
  • 动态查找:指的是在查找的过程中,查找的表格或者文件内容可能被改动,例如树状结构中的B-Tree查找就属于一种动态查找

查找技巧中比较常见的有顺序法、二分查找法、斐波拉契法、插值法、哈希法等等

顺序查找法

顺序查找法又称作是线性查找法,是一种最简单的查找法。他的方法就是将数据一项一项的按照顺序逐个查找,所以无论数据的顺序是什么样,都得从头到尾遍历一次。次方法的有点就是文件在查找前不需要进行任何处理与排序,缺点就是查找速度较慢。如果数据没有重复,找到数据就可以中止查找,最差情况下是未找到数据,而需要进行n次比较,在最好情况下则是一次就能找到数据,只需要1次比较。

  1. 顺序查找法的分析
    时间复杂度:如果数据没有重复,找到数据就可以中止查找,在最差情况下是未找到数据,而需进行n次比较,时间复杂度为O(n)
  2. 在平均情况下,假设数据出现的概率想到,则需要进行(n+1)/2次比较
  3. 当数据量很大时,不适合使用顺序查找法。但如果预估所查找的数据在文件的前段,选择这种查找法则可以减少查找的时间

设计一个程序,随机生成1-150的80个整数,实现顺序查找法

"""
随机生成1-150的80个数字,完成顺序查找
"""
import randomdata = [0] * 80
for i in range(80):data[i] = random.randint(1,150)val = 0
while val != -1:find = 0val = int(input("请输入查找的数字(1-150),输入-1离开:"))for i in range(80):if data[i] == val:print("在第%3d个位置找到了[%3d]"%(i+1,val))find += 1if find == 0 and val != -1:print("#########没有找到[{}]###########".format(val))
print("数据内容是:")
for i in range(10):for j in range(8):print("%2d[%3d]\t"%(i*8+j+1,data[i*8+j]),end='')print()

在这里插入图片描述


http://chatgpt.dhexx.cn/article/TVPY4wpJ.shtml

相关文章

【查找】顺序查找

顺序查找 定义:顺序查找就是在文件的关键字集合key[1,2,…,n]中找出与给定的关键字key相等的文件记录。 步骤: 1.从文件的第一个记录开始,将每个记录的关键字与给定的关键字key进行比较; 2.如果查找到某个记录的关键字等于key&am…

有序顺序表的查找

有序顺序表的查找 一、 1.初始化一个顺序表 2.对顺序表进行顺序查找 3.建立一个有序顺序表 4.对有序顺序表进行折半查找 二、 1.首先建立一个结构体以便顺序表的使用,利用顺序查找算法的思想,我们把要查找的数存在List->data[0],从顺序表…

顺序表的查找——按位查找和按值查找

数据结构学习中,记录学习过程,顺便分享给学习中的你! 感谢你的关注、点赞、收藏支持! 1.按位查找 //按位查找 时间复杂度O(1) #define InitSize 10 typedef struct{ElemType *data;int MaxSize;int length; } SeqList;ElemTyp…

02 顺序查找

顺序查找 顺序查找也可以叫做线性查找。它对顺序表和链表都适用。对于顺序表可以通过数组下标递增扫描每个元素;链表通过指针 next 依次扫描每个元素。顺序表通常分为:对一般的无序线性表的顺序查找和按关键字有序的线性表的顺序查找。 一般线性表的顺序…

【算法-查找之一】顺序查找

算法-查找之一顺序查找 查找-是最常见的数据操作之一,数据结构核心运算之一,其重要性不言而喻。顺序查找是人们最熟悉的查找策略,对于小规模的数据,顺序查找是个不错的选择。 1.顺序查找: 核心:从数据的第一…

查找算法——顺序查找

目录 ​一、算法介绍 1.算法思想 2.算法流程 二、算法实现 1.代码实现 2.测试用例及结果 三、效率分析 1.时间复杂度 2.空间复杂度 ​一、算法介绍 1.算法思想 顺序查找也称线性查找,其查找思想非常简单,只需对数组进行遍历并将待查找元素key…

索引表的顺序查找

索引表的顺序查找 基本策略 采用建立“目录”的形式,先查找目录,然后根据目录将需要的数据块读入内存,从而实现只需先对小部分数据进行查询,提高查找效率的效果 索引表的建立 将线索表中数据按关键字分为若干块(块…

顺序表的查找

前言 首先在这里要解释一下,为什么将顺序表这一种数据结构分为多篇文章去编写。首先我的笔记是根据王道老师的计算机考研——数据结构的视频课程去学习的。其次,我觉得将一种数据结构的知识放在一篇文章中,文章会显得过于冗长,容…

查找(顺序查找)

在java的介绍中,我们常用的查找有两种 1.顺序查找:(案例演示) 2.二分查找:【二分法】 案例要求: 有一个数列:白眉鹰王,金毛狮王,紫衫龙王,青翼蝠王&#x…

CDH6.0.1高可用

CDH高可用主要是HDFS和YARN,在保证hdfs数据不丢失的情况下,即使有节点宕机,重启即可也不会有影响。 官网文档 目录 HDFS HAHue 设置Hive 设置YARN HAHive HAHBase HA HDFS HA 进入HDFS -> 操作 -> High Availability。 给备用NameNo…

clickhouse 三种高可用方案

简介 本文介绍三种高可用使用,及验证clickhouse的高可用性,三种方案分别如下: 不管是多分片还是多副本都是以集群方式部署,那么对外暴露多台Clickhouse服务,通常会通过LB方式使每台服务器能够均匀的接受到客户端的请…

【RocketMQ】集群的搭建与高可用

RocketMQ分布式集群是通过Master和Slave的配合达到高可用性的。 Master和Slave的区别:在Broker的配置文件中,参数brokerId的值为0表明这个Broker是Master,大于0表明这个Broker是Slave,同时brokerRole参数也会说明这个Broker是Mas…

Sentry 高可用部署

Sentry 高可用部署,部署分析基于Sentry 10.1.0.dev 05e720a7 对应dockerhub镜像版本分别为: getsentry/snuba:31c967e774759c0548652d986645fdff844e0a39 getsentry/sentry:8549f2a492c803bab77af26e7417272975b9369a getsentry/symbolicator:94cdbb7b54…

HA高可用

什么事应用程序的高可用 高可用性(high availability)通常用来描述一个系统经过专门的设计,从而减少停工的时间,而保持其服务的高度可用性 高可用程序的类型 主从方式(冷备) 两个相同的应用程序,一个对外提供服务,成为主程序,另一个平时不运行为备程序,就是一个主程序的备份,…

harbor高可用部署

harbor高可用简介 harbor目前有两种主流的高可用方案: 双主复制,harbor自带的镜像复制功能多harbor实例共享后端存储 双主复制架构在遇到大镜像时有同步延迟,并且一个实例故障后需要手动重新开启复制策略才能再次同步,下面以阿里…

HADOOP 高可用搭建

首先先说一下大概的步骤,就用四台为例,简单适合新手操作。 流程是:创建虚拟机,配置好;搭建linux系统;安装jdk(因为后面好多都依赖jkd);免密登录ssh;安装zook…

高可用详细概念及三种决策方式分析

文章目录 1.基本概念1.计算高可用2.存储高可用高可用状态决策1.独裁式2.协商式3.民主式 1.基本概念 这个定义的关键在于“无中断”,但恰好难点也在“无中断”上面,因为无论是单个硬件还是单 个软件,都不可能做到无中断,硬件会出故…

Nacos实现高可用

由于Nacos暂不支持Arm架构芯片的Mac集群搭建,本小节用Linxu云主机(Nacos比较吃内存,2个Nacos服务器集群,至少2G内存)环境演示。 通过前面的学习,我们已经了解了如何使用Nacos以及Nacos的功能等,…

浅谈高可用测试

前言 现今的互联网产品越来越注重可靠性,尤其是在生产环境中使用的系统,对高可用性都有一定的要求。而作为产品的提供方,在交付产品之前,也会对高可用进行验收测试。近期跟进过两个产品曾有高可用测试的需求,在此简单…

nginx高可用

Nginx高可用 为什么要使用nginx的高可用:因为nginx作为反向代理服务器时,有可能出现宕机的情况,而由于其反向代理的特性,就会导致其他服务器(tomcat等)无法被访问,这样项目就停止工作了。但是使…