码迷,mamicode.com
首页 > 其他好文 > 详细

5、查找——数据结构【基础篇】

时间:2017-06-04 10:47:33      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:记录   方法   时间   ash   性能分析   关键字   数据   组织结构   动态查找   

查找

查找的基本概念

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

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

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

  静态查找的方法:

      顺序查找:

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

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

          时间复杂度为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、查找——数据结构【基础篇】

标签:记录   方法   时间   ash   性能分析   关键字   数据   组织结构   动态查找   

原文地址:http://www.cnblogs.com/wxt19941024/p/6899339.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!