java基础巩固-宇宙第一AiYWM:为了维持生计,四大基础之数算总结_Part_7做算法题,为了啥,学思路呗,难不成背题去了嘛 & 散列表等数据结构~总结整起

PART1:按照数据结构分:

PART2:按照题型分:

  • 手写系列
    在这里插入图片描述
  • 括号问题
    在这里插入图片描述
  • 队列:
    在这里插入图片描述
  • 栈:
    在这里插入图片描述
  • 堆:
    在这里插入图片描述
  • 散列表(哈希表)&图
    在这里插入图片描述
    • 哈希表又叫散列表,是一种根据设定的映射函数f(key)将一组关键字映射到一个有限且连续的地址区间上,并以关键字在地址区间中的“像”作为元素在表中的存储位置的一种数据结构。这个映射函数f(key)即为哈希函数也叫散列函数,通过哈希函数得到的存储位置称为哈希地址或散列地址
      • 构造哈希函数的方法:或者说如何减少哈希冲突?一个好的哈希函数可以有效的减少哈希冲突的出现
        • 直接定址法:取关键字或关键字的某个线性函数值为散列地址。即hash(k)=k或hash(k)=ak + b,其中a,b为常数 ;对于不同的关键字不会产生冲突缺点是由于关键字集合很少是连续的,会造成空间的大量浪费
        • 除留余数法:
          • 取关键字被某个不大于散列表表长m的数p除后所得的余数为散列地址。即hash(k)=k mod p, p≤m。不仅可以对关键字直接取模,也可在折叠法、平方取中法等运算之后取模。
          • 对p的选择很重要,一般取小于m的最大素数,若p选择不好,容易产生冲突
        • 数字分析法:假设关键字是以r为基的数,并且哈希表中可能出现的关键字都是事先知道的,则可选取关键字的若干数位组成哈希地址;需要对关键字进行分析。
        • 平方取中法::取关键字平方后的中间几位为哈希地址
        • 折叠法:将关键字分割成位数相同的几部分(最后一部分的位数可以不同),然后取这几部分的叠加和(舍去进位)作为哈希地址。
      • 解决哈希冲突的方法:
        • 开放地址法:我感觉其实就是不停来回转悠,看还有没有其他空位
          在这里插入图片描述
        • 链地址法:将所有具有相同哈希地址的记录放在同一单链表中,哈希表的第i个元素存放哈希地址为i的记录组成的单链表的头指针。
          在这里插入图片描述
        • 建立一个公共溢出区:一旦产生冲突,均把当前记录放入公共溢出区的当前表尾。
        • 再哈希法:再哈希法即选取若干个不同的哈希函数,在产生哈希冲突的时候计算另一个哈希函数,直到不再发生冲突为止

未完待续…

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值