查找-顺序+折半+索引+哈希【数据结构与算法】

    大三党,大数据专业,正在为面试准备,欢迎学习交流。`

    文章中总结了四种常见的查找方法,内容包括了基本概念及代码实现。内容较多,特别是哈希查询的内容比较多。可能有所遗漏,但是总结了大部分的内容。
附带一本热销的电子书配套适用更佳,链接如下
大话数据结构
提取码:mazy

往期文章
绪论-数据结构的基本概念
绪论-算法
线性表-顺序表和链式表概念及其代码实现

1 常见的查找算法

  • 顺序查找
  • 二分查找
  • 索引查找
  • 哈希查找

2 平均查找长度ASL比较查找算法性能

公式:ASL=P1C1+P2C2+…+PnC

Pi——查找第i个元素的概率
Ci——查找第i个元素需要的比较次数

3 顺序查找

3.1 顺序查找的思想

在这里插入图片描述

  • 从表中指定位置(一般为最后一个,第0个位置设为岗哨)
    的记录开始,沿某个方向将记录的关键字与给定值相比较,
    若某个记录的关键字和给定值相等,则查找成功
  • 反之,若找完整个顺序表,都没有与给定关键字值相等的
    记录,则此顺序表中没有满足查找条件的记录,查找失败。

3.2 顺序查找代码

int seqsearch(DataType R[], KeyType key)
{
   
R[0]=key, i=n;//第一个位置设为岗哨
while (R[i] != key) 
i=i-1;//从最后一个位置往前查找
return i;
}

3.3 顺序表上顺序查找的平均查找长度(性能分析)

在这里插入图片描述
对于顺序表的
Ci=n-i+1
Pi =1/n
则可以得到如下计算结果(等差数列的计算):
在这里插入图片描述

4 折半查找

4.1 折半查找的前提条件及查找过程

前提条件
    如果顺序表中的纪律按关键字值有序即R[i].≤R[i+1],i=1,2,…,n-1,则称顺序表为有序表。
在这里插入图片描述

4.2 折半查找代码

int BinarySearch(DataType SL[], KeyType key, int n){
   
/*在长度为n的有序表SL中折半查找其关键字等于key的记录*/
/*查找成功返回其在有序表中的位置,查找失败否返回0*/
int low=1;
int high=n;
while(low<=high){
   
mid=(low+high)/2;//取整 小的数 右边的数
if(key = = SL[mid]) 
{
   
  return mid;
}
else if( key>SL[mid]
  • 11
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Windalove

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值