数据结构--查找:查找分类、顺序查找、折半查找、哈希查找

一、静态查找

1、顺序查找

      for循环一趟挨个查找

2、折半查找(有序表的查找)

     mid=(low+high)/2       向下取整

     key<arr[mid]   high=mid-1

     key>arr[mid]   low=mid+1

3、分块查找 

(1)分块--将表分为n块

(2)建索引表--将每个块中最大的key值取出,并排序到索引表

        索引表

         key---存放每个块中最大的值

         link---存放该值对应块的起始地址

(3)查找过程

  •   首先通过顺序查找或折半查找索引表,找出 key对u应在哪一块
  • 到块中只能通过顺序查找依次查找key值

二、动态查找

1、二叉排序树(BST)

     有序的二叉树:左<根<右

2、平衡二叉树(AVL)

     |每个结点左孩子高度-右孩子高度|<=1

3、B树(多路搜索树)

   多结点有序:左<根<右

三、哈希表查找

1、哈希函数--确定哈希地址

(1)直接定址法  h(k)=k+c

       适合:关键字基本联系

       特点:以关键字本身或加上一个函数作为哈希地址

 (2)除留余数法  h(k)=k mod p

  •   构建长为m的哈希表
  •  取一个小于m的素数p
  •   k取余p得哈希地址

[注]素数--质数,除了1和本身之外没有其他因数得自然数

(3)数字分析法  关键字的一部分

      取关键字中值较均匀得数字位作为哈希地址

2、解决哈希冲突

(1)开放地址法---地址+di

  •    线性探测 di=1,2,3,...m
  •     平方探测 di=1方 ,-1方,2方,-2方...

(2)拉链法

       特点:将hash冲突的值用单链表连接起来

       装填因子(负载系数)=关键字个数/哈希表长=n/m

     

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值