5查找——数据结构基础篇

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了5查找——数据结构基础篇相关的知识,希望对你有一定的参考价值。

查找

查找的基本概念

  查找的目的是从给定的同一类型的数据集合中,找出人们所需要的数据元素(或记录)

线性表的查找——静态查找

  在对查找表实施静态查找时,查找表的组织结构可以是顺序表结构,也可以是单链表结构

  静态查找的方法:

      顺序查找:

          顺序查找是用待查找记录与查找表中的记录逐个比较,如果找到相等记录,则查找成功,否则查找失败

          顺序查找对关键字的是否有序没有要求,但是查找效率低下

          时间复杂度为O(n)

      注意:当n较大时,不宜采用顺序查找

      

      折半查找(二分查找)

      折半查找的前提条件:查找表有序且顺序存储

          折半查找是用待查找元素与查找表中间元素的关键字进行比较

          二分查找判定树

 

树表查找——动态查找

      在查找表中实施查找时,对于给定值key,如果表中存在关键字值等于key的记录,则查找成功,否则将待查找记录按规则插入查找表中

      二叉排序树查找:

      其前提条件:将查找表组织成为一棵二叉排序树

      二叉排序树查找的最好时间复杂度O(log2n)

      二叉排序树查找的最差时间复杂度O(n)

      二叉排序树查找效率必顺序查找要好,比二分查找要差

      

      注意平衡二叉树是其平衡因子只能是0、1、-1否则就是二叉排序树

 

散列查找——hash,哈希查找

      一种不通过大量无效的比较,就能直接找到待查关键字的位置的查找方法

      hash方法——在存放记录时,通过相同函数计算存放位置,并按此位置存放

      hash地址——通过hash函数计算记录的存储位置,我们把这个存储位置叫做hash地址

      hash方法需要讨论三个问题:

        1)装载因子

        2)hash函数

        3)解决冲突

      构造hash函数应注意以下几个问题:
        1)计算hash函数所需要的时间

        2)关键字的长度

        3)hash表的大小

        4)关键字的分布情况

        5)记录的查找频率

构造hash函数的常用方法:

1)直接定址法

2)除留余数法

3)平方取中法

4)数字分析法

5)折叠法

处理冲突的方法:

1)开放地址法:

    线性探测再hash

    二次探测再hash

    伪探测再hash

线性探查法的性能分析:

 

2)链地址法

拉链法查找的性能分析:

以上是关于5查找——数据结构基础篇的主要内容,如果未能解决你的问题,请参考以下文章

Java面试题-基础篇

大厂高频面试:Java基础篇(算法数据结构基础设计模式)

算法篇:二分查找基础篇

06-Django-基础篇-模板

Java八股文面试题 基础篇 -- 二分查找算法冒泡排序选择排序插入排序希尔排序快速排序

Java八股文面试题 基础篇 -- 二分查找算法冒泡排序选择排序插入排序希尔排序快速排序