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

数据结构(7.2_1)——顺序查找

顺序查找,又叫"线性查找",通常用于线性表(或者顺序表和链表)。

算法思想:从头到尾全部查找出来(或者反过来也OK)

顺序查找的实现

typedef struct {//查找表的数据结构(顺序表)ElemType* elem;//动态数组地址int TableLen;//表的长度
}SSTable;
//顺序查找
int Search_Seq(SSTable ST, ElemType key) {int i;for (i = 0; i < ST.TableLen && ST.elem[i]!= key; ++i);//查找成功,则返回下标;查找失败,则返回-1return i == ST.TableLen ? -1 : i;
}

查找成功:

 

查找失败:

 

 

顺序查找的实现(哨兵)

typedef struct {//查找表的数据结构(顺序表)ElemType* elem;//动态数组地址int TableLen;//表的长度
}SSTable;
//顺序查找
int Search_Seq(SSTable ST, ElemType key) {ST.elem[0] = key;//"哨兵"int i;for (i = ST.TableLen; ST.elem[i] != key;--i);//从后往前找return i;//查找成功,则返回元素下标;查找失败,则返回0
}

查找成功的情况:

 查找失败的情况:

 

”哨兵“方法查找的优点:无需判断是否越界,效率更高

查找效率分析

默认每个元素的查找概率为1/n

 

顺序查找的优化(对有序表) 

用查找判定树分析ASL

一个成功结点的查找长度=自身所在层数

一个失败结点的查找长度=其父节点所在层数

默认情况下,各种失败情况或成功情况都等概率发生

 

顺序查找的优化(被查概率不相等) 

将概率大的元素优先放到前面(使用降序排列)

总结

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 彻底理解Proxy和Reflect
  • SQL server 6.5升级到SQL server 2019
  • linux基础IO——动静态库——进程编址、进程执行、动态库加载
  • 品读 Java 经典巨著《Effective Java》90条编程法则,第1条:用静态工厂方法代替构造器
  • java:mybatisplus查询功能演示,包括模糊查询
  • 降维打击 华为赢麻了
  • 15.2 JDBC数据库编程2
  • 【H2O2|全栈】关于HTML(2)HTML基础(一)
  • 线程(Thread)
  • 从“N 号房”看Deepfake乱象,如何证明“我”不是我?
  • C++之打造my vector篇
  • 【H2O2|全栈】关于HTML(1)认识HTML
  • Java通过jna调用c++动态库
  • 基于 AT 固件测试 ESP32 设备作为 WiFi AP 模式创建 TCP Server 开启 UART-to-WiFi 透传模式的指令序列
  • TCP通信实现
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • Bootstrap JS插件Alert源码分析
  • orm2 中文文档 3.1 模型属性
  • Spring声明式事务管理之一:五大属性分析
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 那些被忽略的 JavaScript 数组方法细节
  • 软件开发学习的5大技巧,你知道吗?
  • 一文看透浏览器架构
  • 最近的计划
  • gunicorn工作原理
  • python最赚钱的4个方向,你最心动的是哪个?
  • 阿里云重庆大学大数据训练营落地分享
  • 组复制官方翻译九、Group Replication Technical Details
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​探讨元宇宙和VR虚拟现实之间的区别​
  • #数学建模# 线性规划问题的Matlab求解
  • #图像处理
  • $.ajax()方法详解
  • (13):Silverlight 2 数据与通信之WebRequest
  • (2024最新)CentOS 7上在线安装MySQL 5.7|喂饭级教程
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (js)循环条件满足时终止循环
  • (ZT)一个美国文科博士的YardLife
  • (八)Flask之app.route装饰器函数的参数
  • (二)延时任务篇——通过redis的key监听,实现延迟任务实战
  • (二开)Flink 修改源码拓展 SQL 语法
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (接口封装)
  • (四)JPA - JQPL 实现增删改查
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .Net Memory Profiler的使用举例
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)
  • .netcore 获取appsettings
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • .Net转Java自学之路—基础巩固篇十三(集合)
  • .w文件怎么转成html文件,使用pandoc进行Word与Markdown文件转化
  • .考试倒计时43天!来提分啦!
  • @开发者,一文搞懂什么是 C# 计时器!
  • []FET-430SIM508 研究日志 11.3.31