数据结构 - 查找算法

server/2024/12/22 9:00:26/

一.查找的概念

二.顺序表查找

特点:

        1.记录的数据可以是无序

        2.当数据量较大时,查找效率低,需要依次遍历

/*** @description:            顺序表查找算法,从后往前查找* @param - a       :       要操作的数组的指针* @param - key     :       指定查找的内容* @return          :       成功则返回(元素的下标) , 失败返回(-1)
*/
int Seqsearch(int *a,int key)
{int i;/* 从后到前依次遍历 */for(i = N-1; i >= 0; i--){if(a[i] == key)             //若找到了则直接返回{return i;}}return -1;
}

三.二分法查找

特点:

        1.数据必须是有序的。

/*** @description:            二分法查找算法* @param - a       :       要操作的数组的指针* @param - key     :       要查找的内容* @return          :       成功则返回该元素的序号,失败则返回 -1
*/
int Binsearch(int *a,int key)
{/* low 表示区间下界 , high 表示区间上界 */static int low,high,mid;low = 0;high = N - 1;/* 循环执行二分法 */while(low <= high){mid = (low + high) / 2;         //获取中间元素的下标/* 1.若下标为 mid 的元素 == key  */if(key == a[mid])return mid;/* 2.若下标为 mid 的元素 > key , 则表示要查找的元素在 mid 的左边 */if(key < a[mid]){high = mid - 1;}/* 3.若下标为 mid 的元素 < key , 则表示要查找的元素在 mid 的右边 */else if(key > a[mid]){low = mid + 1;}}return -1;
}

三.哈希表查找

1.哈希表定义

        存储记录时,有意的建立 key 与记录的存储位置之间的关系,以构建哈希表。

2.构建哈希表

(1).选取恰当的哈希函数

        尽可能将记录均匀分布,以减少冲突现象的发生。

        ①.直接地址法(不常用)

        ②.数字分析法(不常用)

        ③.平方取中法

        ④.叠加法
        ⑤.保留余数法(常用)
        ⑥.随机函数法

(2).处理冲突

        ①.开放地址法

        
②.链地址法

 


http://www.ppmy.cn/server/125306.html

相关文章

Linux-L11-查看本机ip地址

linux查看ip地址 查看自己的IP地址使用 ip 命令&#xff1a;使用 ifconfig 命令使用 hostname 命令&#xff1a;使用 nmcli 命令 查看某个特定接口的IP查看公网IP地址 在Linux系统中&#xff0c;查看自己的IP地址可以通过多种方式实现&#xff0c;这里提供几种常用的方法&#…

2024全网最为详细的红帽系列【RHCSA-(8)】初级及进阶Linux保姆级别骚操作教程;学不费来砍我[就怕你日后学成黑客了]

欢迎各位彦祖与热巴畅游本人专栏与博客 你的三连是我最大的动力 以下图片仅代表专栏特色 专栏跑道一 ➡️ MYSQL REDIS Advance operation 专栏跑道二➡️ 24 Network Security -LJS ​ ​ ​ 专栏跑道三 ➡️HCIP&#xff1b;H3C-SE;CCIP——LJS[华为、华三、思科高级网络]…

keepalived+lvs集群

目录 一、环境 二、配置 1、master 1.在master上安装配置Keepalived 2.在master上修改配置文件 2、backup 1.在backup&#xff08;192.168.229.12&#xff09;上安装keepalived 2.在backup上修改配置文件 3、master和backup上启动服务 4、web服务器配置 1.web1和web…

生产环境升级mysql流程及配置主从服务

之前写到过mysql升级8.4的文章, 因此不再介绍mysql的安装过程 避免服务器安装多个mysql引起冲突的安装方法_安装两个mysql会冲突吗-CSDN博客 生产环境升级mysql8.4.x流程 安装mysql 参考之前文章: 避免服务器安装多个mysql引起冲突的安装方法_安装两个mysql会冲突吗-CSDN博客…

手搓游戏 —— 生成式 AI 助手 Amazon Q Developer 初体验

文章目录 一、Amazon Q介绍二、实验环境准备2.1 下载项目安装包2.2 验证 Python 环境2.3 安装Amazon Q扩展2.4 授权Builder ID 三、Amazon Q 快速理解main.py四、Amazon Q快速梳理控制器逻辑五、启动像素沙盒开放世界程序六、在 update() 中实现传送功能七、定位并修复代码漏洞…

rdp远程桌面服务协议概述

rdp远程桌面服务协议概述 什么是远程桌面服务远程桌面服务的通信过程及功能 建立连接资源重定向与用户体验断开连接 远程桌面服务的协议架构 核心协议与基础通信虚拟通道与扩展协议协议协作与层次划分协议的可扩展性协议扩展与性能优化 总结参考 rdp远程桌面服务协议概述 对于…

目前最好用的爬虫软件是那个?

作为一名数据工程师&#xff0c;三天两头要采集数据&#xff0c;用过十几种爬虫软件&#xff0c;也用过Python爬虫库&#xff0c;还是建议新手使用现成的软件比较方便。 这里推荐3款不错的自动化爬虫工具&#xff0c;八爪鱼、亮数据、Web Scraper 1. 八爪鱼爬虫 八爪鱼爬虫是一…

云原生周刊:Artifact Hub 成为 CNCF 孵化项目|2024.9.23

开源项目推荐 Coroot Coroot 是一个开源监控工具&#xff0c;旨在为云原生应用提供可观察性。它通过整合指标、日志和追踪信息&#xff0c;专注于提供应用性能的洞察。 DirectPV DirectPV 是一个开源项目&#xff0c;旨在为 Kubernetes 工作负载提供高效的直接卷访问。它通…