当前位置: 首页 > news >正文

数据结构——查找(线性表的查找与树表的查找)

目录

1.查找

1.查找的基本概念

1.在哪里找?

 2.什么查找?

3.查找成功与否? 

4.查找的目的是什么? 

5.查找表怎么分类? 

6.如何评价查找算法? 

7.查找的过程中我们要研究什么? 

2.线性表的查找 

1.顺序查找 

代码示例:

 1.顺序查找的改进

代码示例:

2.顺序查找的性能分析与特点 

2.折半查找 

代码示例:

1.折半查找的性能分析与特点 

3.分块查找(索引顺序查找) 

1.分块查找性能分析与优缺点 

3.树表的查找 

1.二叉排序树 

1.二叉排序树的存储结构

代码示例:

2.二叉排序树的递归查找 

代码示例: 

3.二叉排序树的查找分析 

平衡二叉树 

4.二叉排序数的操作-插入 

5.二叉排序树的操作-删除 

4.总的代码


1.查找

533296e771294cbaa2746ef6e04969b0.png

1.查找的基本概念

1.在哪里找?

a9def868af234913868a73aae44271f7.png

 2.什么查找?

f9f7e196a1744e16bfe7259cd3e8c05e.png

3.查找成功与否? 

bfe61aa8ddd943f7acf5cc5b20b917a7.png

4.查找的目的是什么? 

a51e5f6f514049b991cb5068bd975fde.png

5.查找表怎么分类? 

6c003c29f02446ea94a41cce70496b37.png

6.如何评价查找算法? 

51ec30689b1f45b6b1413fef0b5f2888.png

7.查找的过程中我们要研究什么? 

d7bc73aacf224fc7a140dd5171df0964.png

2.线性表的查找 

eef9498bb7954bdd8a6d5fab5cac7054.png

1.顺序查找 

47ba2e82f5e04db3bd81d1b8f4407669.png

c91ee042172a4e11b7a1c9f35e6d9a32.png

代码示例:

typedef struct {int key;
}elem;typedef struct {elem *r;int len;
}sstable;sstable st;int search_seq(sstable st,int key) {for(int i = st.len; i >= 1; --i) {if(st.r[i].key == key) return i;return 0;}
}
 

b9a9a808e3694b318a4415c8563b5685.png

 1.顺序查找的改进

e4ba4f4e86fd4875abb501bf6c6abfea.png

ba7ce0590e3e4a94b7f1cc1a6e7bb43c.png

fcdd734399b84c1cad36eeb8d064db79.png

a47727fce9b74be7b834080cb1c2db40.png

代码示例:
int Search_seq(sstable st,int key) {st.r[0].key = key;int i;for(i = st.len; st.r[i].key != key; --i);return i;
}
 

c79ce80272e54bff8dfcc054034861dc.png

2.顺序查找的性能分析与特点 

3dea09fcb3a349a8bb8957d18fd9bf2a.png

c578c6704db24293ab255d1b1b1fe36d.png

738d66ea5188408d8b47fe87040f93b9.png

d7acc23868234f1a9ba04c3bbd719f9d.png

 

2.折半查找 

4b547c5f5cf844c09c194ed0e01e1698.png

f77d8dfedaa941be8029ef0e9a4aa3d8.png

aaf870f135af41ddb0bdf6950c7bccf8.png

1419712a749c4e4a97b246f02518aa40.png

代码示例:
 
int search_bin(sstable st,int key) {int low = 1;int high = st.len;while(low <= high) {int mid = (low + high) / 2;if(st.r[mid].key == key) return mid;else if(key < st.r[mid].key)high = mid - 1;else low = mid + 1;}return 0;
}

83cf0dd929b94b1587d1ec744b58f50b.png

4ed481b24d864da691dcd5500e05c251.png

a63cdf5df0bb4facb2a11e98e88346ba.png

1.折半查找的性能分析与特点 

f6a1c389a54f40b7b76c8e1983094a05.png

16fa0295167a40d891a517b5e66c2fee.png

2e7e8a16ea9f47ad89828ae56c814124.png

3.分块查找(索引顺序查找) 

546a37c1fa694f78ac83c8344cfb3279.png

8f13666cb30f45ce81a8a832ee7bc846.png

1.分块查找性能分析与优缺点 

381952aa31e54e21b68f3bec81b5a8a4.png

039a56248a6f4b1cb82b685de02a965d.png

f191ed21adb24296b963ee5043be129d.png

3.树表的查找 

1d3471901908473d9c27c3c7d90acf64.png

1.二叉排序树 

a409770b951e44f3b0082d5abb81bfd2.png

df037eab22ab464980ead17d156476f6.png

e0b5b59f2ed145dd83f6e6c40ef3e71d.png

3ffc4da738ab4f1383f8dbb8941c8de2.png

1.二叉排序树的存储结构

5a0a7984c2a847ceb8a7b23356db16e8.png

代码示例:
 
typedef struct {int key;
}elemtype;typedef struct bstnode {elemtype data;struct bstnode *lchild, *rchild;
}bstnode,*bstree;bstree t;

2.二叉排序树的递归查找 

a22ea3fa087f464685fbe2d5e476f3a5.png

a5c7483e9c994a1ea1c519a84c1843b3.png

代码示例: 
bstree searchbst(bstree t,int key) {if((!t) || key == t -> data.key) return t;else if(key < t -> data.key)return searchbst(t -> lchild,key);else return searchbst(t -> rchild,key);
}

3.二叉排序树的查找分析 

0b4430660853460fa87667c2dd72c5f7.png

27aff5d23c4545bcab11c992207ba7a6.png

a21afdf37dfe4ffd872afbe23b4d77b2.png

平衡二叉树 

574e568b8bd94e9fa72b3728e6bbaa79.png

4.二叉排序数的操作-插入 

30a0cf9a947d40f4940ea5f89651e63f.png

 

a2db92b6d828477baf544fa4c7e1a1bb.png

216451cdf1c249cd9482e99e2761091b.png

d9347d625dc94bfdb53d8f9936dea63d.png

6cbef40ed9724e9b8bf7a72cbb3e3b7f.png

5.二叉排序树的操作-删除 

dfaa609e58f4470b9b3b5ee6366d65da.png

14f50aa057a949548f29cec25738b611.png

f850985719e44fdfb0092222dfba753e.png

f1b92c16c6e347379eb21b7dae3699b2.png

ce8f4521e19c45f19313a869c3f58587.png

2b992b9215b143238ea6b84cf3f1f804.png

a93635bc67a54ca2bab3cb3a3652eb59.png

4.总的代码

#include<bits/stdc++.h>
using namespace std;typedef struct {int key;
}elem;typedef struct {elem *r;int len;
}sstable;sstable st;int search_seq(sstable st,int key) {for(int i = st.len; i >= 1; --i) {if(st.r[i].key == key) return i;return 0;}
}int Search_seq(sstable st,int key) {st.r[0].key = key;int i;for(i = st.len; st.r[i].key != key; --i);return i;
}int search_bin(sstable st,int key) {int low = 1;int high = st.len;while(low <= high) {int mid = (low + high) / 2;if(st.r[mid].key == key) return mid;else if(key < st.r[mid].key)high = mid - 1;else low = mid + 1;}return 0;
}typedef struct {int key;
}elemtype;typedef struct bstnode {elemtype data;struct bstnode *lchild, *rchild;
}bstnode,*bstree;bstree t;bstree searchbst(bstree t,int key) {if((!t) || key == t -> data.key) return t;else if(key < t -> data.key)return searchbst(t -> lchild,key);else return searchbst(t -> rchild,key);
}int main() {return 0;
}

相关文章:

数据结构——查找(线性表的查找与树表的查找)

目录 1.查找 1.查找的基本概念 1.在哪里找&#xff1f; 2.什么查找&#xff1f; 3.查找成功与否&#xff1f; 4.查找的目的是什么&#xff1f; 5.查找表怎么分类&#xff1f; 6.如何评价查找算法&#xff1f; 7.查找的过程中我们要研究什么&#xff1f; 2.线性表…...

MySQL入门学习-深入索引.组合索引

在 MySQL 中&#xff0c;组合索引&#xff08;也称为复合索引&#xff09;是在多个列上创建的索引。以下是关于组合索引的详细信息&#xff1a; 一、组合索引的概念&#xff1a; - 组合索引是基于多个列创建的索引结构。它可以提高在这些列上进行查询的效率。 二、深入理解组…...

RABBITMQ的本地测试证书生成脚本

由于小程序要求必须访问wss的接口&#xff0c;因此需要将测试环境也切换到https&#xff0c;看了下官方的文档 RabbitMQ Web STOMP Plugin | RabbitMQ里面有这个信息 然后敲打GPT一阵子&#xff0c;把要求输入几个来回&#xff0c;得到这样一个脚本&#xff1a; generate_cer…...

记录些Redis题集(4)

Redis 通讯协议(RESP) Redis 通讯协议&#xff08;Redis Serialization Protocol&#xff0c;RESP&#xff09;是 Redis 服务端与客户端之间进行通信的协议。它是一种二进制安全的文本协议&#xff0c;设计简洁且易于实现。RESP 主要用于支持客户端和服务器之间的请求响应交互…...

JVM:垃圾回收器

文章目录 一、介绍二、年轻代-Serial垃圾回收器三、老年代-SerialOld垃圾回收器四、年轻代-ParNew垃圾回收器五、老年代-CMS&#xff08;Concurrent Mark Sweep&#xff09;垃圾回收器六、年轻代-Parllel Scavenge垃圾回收器七、Parallel Old垃圾回收器八、G1垃圾回收器 一、介…...

Golang | Leetcode Golang题解之第228题汇总区间

题目&#xff1a; 题解&#xff1a; func summaryRanges(nums []int) (ans []string) {for i, n : 0, len(nums); i < n; {left : ifor i; i < n && nums[i-1]1 nums[i]; i {}s : strconv.Itoa(nums[left])if left < i-1 {s "->" strconv.It…...

单目3D和bev综述

文章目录 SOTA2D 检测单目3d检测3d bev cam范式1 Transformer attention is all you need 20172 ViT vision transformer ICLR 2021google3 swin transformer 2021 ICCV bestpaper MS4 DETR 20205 DETR3D 20216 PETR 20227 bevformerLSSbevdetcaddn指标 mAP NDS标注&#xff1a…...

每日Attention学习11——Lightweight Dilated Bottleneck

模块出处 [TITS 23] [link] [code] Lightweight Real-Time Semantic Segmentation Network With Efficient Transformer and CNN 模块名称 Lightweight Dilated Bottleneck (LDB) 模块作用 改进的编码器块 模块结构 模块代码 import torch import torch.nn as nn import to…...

EM32DX-E4 IO 扩展模块

输入&#xff1a;0x6000-01 // 输入 0-15 6020H——00H IN0 计数【0~7】 ——01H IN0_SetCountMode S32 r/w 初始值默认为 0 设置 IN0 的计数方式&#xff1a;0 电平下 降沿&#xff0c;1 电平上升沿&#xff0c; 2 电平任意沿 ——02H IN0_Set…...

【数据结构与算法】选择排序篇----详解直接插入排序和哈希排序【图文讲解】

欢迎来到CILMY23的博客 &#x1f3c6;本篇主题为&#xff1a;【数据结构与算法】选择排序篇----详解直接插入排序和哈希排序 &#x1f3c6;个人主页&#xff1a;CILMY23-CSDN博客 &#x1f3c6;系列专栏&#xff1a;Python | C | C语言 | 数据结构与算法 | 贪心算法 | Linux…...

SpringBoot实战:多表联查

1. 保存和更新公寓信息 请求数据的结构 Schema(description "公寓信息") Data public class ApartmentSubmitVo extends ApartmentInfo {Schema(description"公寓配套id")private List<Long> facilityInfoIds;Schema(description"公寓标签i…...

解决mysql,Navicat for MySQL,IntelliJ IDEA之间中文乱码

使用软件版本 jdk-8u171-windows-x64 ideaIU-2021.1.3 mysql-essential-5.0.87-win32 navicat8_mysql_cs 这个问题我调试了好久&#xff0c;网上的方法基本上都试过了&#xff0c;终于是解决了。 三个地方结果都不一样。 方法一 首先大家可以尝试下面这种方法&#xff1a…...

虚拟环境操作

1、对虚拟环境的操作 查看虚拟环境列表 conda env list 创建虚拟环境 conda create -n 虚拟环境名称 python3.x 激活虚拟环境 conda activate 虚拟环境名称 退出虚拟环境 conda deactivate 删除虚拟环境 conda remove -n 虚拟环境名称 all 2、对虚拟环境下的包的操作…...

企业网三层架构

企业网三层架构&#xff1a;是一种层次化模型设计&#xff0c;旨在将复杂的网络设计分成三个层次&#xff0c;每个层次都着重于某些特定的功能&#xff0c;以提高效率和稳定性。 企业网三层架构层次&#xff1a; 接入层&#xff1a;使终端设备接入到网络中来&#xff0c;提供…...

node.js的安装及学习(node/nvm/npm的区别)

一、什么是node、nvm和npm 1.Node.js node.js 一种Javascript编程语言的运行环境&#xff0c;能够使得javascript能够脱离浏览器运行。以前js只能在浏览器&#xff08;也就是客户端&#xff09;上运行&#xff0c;node.js将浏览器中的javascript运行环境进行封装的&#xff0c;…...

性能优化篇:用WebSocket替代传统的http轮循

当我还是初级菜鸟时,我只会写定时器定时调用接口,发起http请求,定时轮训请求接口,返回最新数据,定时器开启的多了还会引起页面卡顿的性能问题,虽然及时销了但还是会影响流畅问题。然后技术leader一声令下说改成websoket的请求方式,为什么这么做呢?下面来谈谈WebSocket相…...

virtualbox的ubuntu默认ipv4地址为10.0.2.15的修改以及xshell和xftp的连接

virtualbox安装Ubuntu后&#xff0c;默认的地址为10.0.2.15 我们查看virtualbox的设置发现是NAT 学过计算机网络的应该了解NAT技术&#xff0c;为了安全以及缓解ip使用&#xff0c;我们留了部分私有ip地址。 私有IP地址网段如下&#xff1a; A类&#xff1a;1个A类网段&…...

Codeforces Round 957 (Div. 3)(A~D题)

A. Only Pluses 思路: 优先增加最小的数&#xff0c;它们的乘积会是最优,假如只有两个数a和b&#xff0c;b>a&#xff0c;那么a 1&#xff0c;就增加一份b。如果b 1&#xff0c;只能增加1份a。因为 b > a&#xff0c;所以增加小的数是最优的。 代码: #include<bi…...

fedora 40 安装拼音输入法

仅做参考&#xff0c;一般主流linux版本在安装完成后&#xff0c;都会自带中文输入法。而需要配置中文输入法的小众发行版往往软件仓库自带的依赖不全。 1,sudo dnf install ibus 2,sudo dnf install im-chooser 3,sudo dnf install ibus-libpinyin 4,在终端输入im-choose…...

Chromium CI/CD 之Jenkins实用指南2024-如何创建新节点(三)

1. 前言 在前一篇《Jenkins实用指南2024-系统基本配置&#xff08;二&#xff09;》中&#xff0c;我们详细介绍了如何对Jenkins进行基本配置&#xff0c;包括系统设置、安全配置、插件管理以及创建第一个Job。通过这些配置&#xff0c;您的Jenkins环境已经具备了基本的功能和…...

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX&#xff08;不访问内存&#xff09;XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;社区养老保险系统小程序被用户普遍使用&#xff0c;为方…...

ubuntu22.04 安装docker 和docker-compose

首先你要确保没有docker环境或者使用命令删掉docker sudo apt-get remove docker docker-engine docker.io containerd runc安装docker 更新软件环境 sudo apt update sudo apt upgrade下载docker依赖和GPG 密钥 # 依赖 apt-get install ca-certificates curl gnupg lsb-rel…...