【数据结构】06 查找

查找

在这里插入图片描述

查找的基本概念

  • 平均查找长度: A S L = ∑ i = 1 n P i C i ASL={\sum}_{i=1}^{n}P_i C_i ASL=i=1nPiCi
    • n n n为查找表的长度
    • P i P_i Pi为查找第 i i i个元素的概率,一般认为每个元素查找概率相同
    • C i C_i Ci是找到第 i i i个元素所需进行比较的次数

顺序查找

没什么

折半查找

基本思路:将给定的key值与表中间位置元素的关键字比较,若成功,则返回该元素的存储位置,若不等,则所需查找元素只能在中间元素以外的前半部分或者后半部分

int Binary_Search(SeqList L, ElemType key)
{
    int low = 0, high = L.TableLen-1, mid;
    while(low <= high)
    {
        mid = (low + high)/2;
        if(L.elem[mid] == key)
            return mid;
        else if(L.elem[mid]>key)
            high = mid-1;
        else
            low = mid +1;
    }
    return -1;
}

分块查找法(索引顺序查找)

思想:将查找表分为若干子块,块内元素可以无序也可以有序,但是块间有序(第一个块的元素最大关键字小于第二块的元素的最小关键字)

B树和B+树

  • B树:多路平衡查找树,B树中的所有结点的还在结点树最大值称为B树的阶,通常用m表示。
    • 注意插入和删除

散列表

  • 散列函数构造方法:
    • 直接定位法
    • 除留余数法
    • 数字分析法
    • 平方取中法
    • 折叠法
  • 处理冲突方法:
    • 开放定址法
      • 线性探针法
      • 平方探测法
      • 再散列法
    • 拉链发(链接法)

  • 串的存储结构

    • 顺序存储法
    #define MAXLEN 255
    typedef struct{
        char ch[MAXLEN];
        int Length;
    }SString;
    
    • 块链存储表示
    typedef struct{
    	char *ch;
        int length;
    }HString;
    
  • KMP算法是个问题!

这一章节的东西,其实都不难。但是还是要结合题目去刷

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值