查找概述

  定义:

     查找表:是由同一类型的数据元素(或记录)构成的集合,由于“集合”中的数据元素之间存在着松散的关系,因此查找表是一种应用灵便的数据结构。

对查找表的操作:

  • 查询某个“特定的”数据元素是否在查找表中;
  • 检索某个“特定的”数据元素的各种属性;
  • 在查找表中插入一个数据元素;
  • 从查找表中删去某个数据元素。

按照记录在表中的位置和它的关键字之间的关系可以分为:静态查找表,动态查找表Hash表。

       其中静态查找表和动态查找表都是:记录在表中的位置和它的关键字之间不存在一个确定的关系。

       Hash表:记录在表中的位置和它的关键字之间存在一个确定的关系。

静态查找表:

              仅作查询和检索操作的查找表。

动态查找表

            在查找过程中同时插入查找表中不存在的数据元素,或者从查找表中删除已存在的某个数据元素,此类表为动态查找表。

哈希表:

           根据设定的哈希函数 H(key) 和所选中的处理冲突的方法,将一组关键字映象到一个有限的、地址连续的地址集 (区间) 上,并以关键字在地址集中的“映象”作为相应记录在表中的存储位置,如此构造所得的查找表称之为“哈希表”。

 

查找性能分析:

通常把对关键字的最多比较次数和平均比较次数作为两个基本的技术指标,前者叫做最大查找长度 (Maximum Search Length , MSL), 后者叫做平均查找长度 (Average Search Length , ASL) 。

平均查找长度ASL
     查找运算的主要操作是关键字的比较,所以通常把查找过程中对关键字需要执行的 平均比较次数(也称为平均查找长度)作为衡量一个查找算法效率优劣的标准。平均查找长度 ASL(Average Search Length)定义为:     


  其中:
     ①n是结点的个数;
     ②Pi是查找第i个结点的概率。若不特别声明,认为每个结点的查找概率相等,即
           pl=p2…=pn=1/n
     ③ci是找到第i个结点所需进行的比较次数。
  注意:
     为了简单起见,假定表中关键字的类型为整数:
        typedef int KeyType; //KeyType应由用户定义

 

 

 

posted @ 2012-01-13 20:20  nba76ers  阅读(527)  评论(0)    收藏  举报