首页 > 代码库 > 数据结构之查找

数据结构之查找

 

一、静态查找        顺序的查找	       
有序表查找    		平均查找长度:                                              特点
1、折半查找 log(n+1)-1 只是适用于有序表,且限于顺序存储结构(线性链表无法进行折半查找。)
2、斐波那契查找 O(logn)平均性能比折半好,但最坏性能比折半差 分割时只需进行加减运算,适用于关键字均匀分布的表 对表长较大的顺序表,其性能比折半好
3、索引顺序表查找     
二、动态查找  
1、二叉排序树      
  左子树的值小于右子树的值(左小右大);
  二叉链表作为二叉排序树的存储结构;
  插入的节点一定是叶子节点;
  二叉排序树的中序遍历就是一个有序序列;
  二叉排序树既有类似于折半查找的特性,又采用了链表存储结构,因此是动态查找表的一种适宜表示;
  当删除节点时有两种删除方法,详见P230
  折半查找的长度为N的表的判断树是唯一的,而含有N各节点的二叉树的排序却不唯一,查找长度与树的结构有关系。
  平均查找长度也是O(logn)
2、平衡二叉树
  1、左子树和右子树都是平衡二叉树,且左子树和右子树的深度只差的绝对值不超过1;
  平均查找长度也是O(logn);
3、B-树B+树
  
4、键树(数字查找树)
5、哈希表
  1、直接定址法  所得地址集合和关键字集合大小相同,因此,对于不同的关键字不会发生冲突,但实际中应用很少;
  2、数字分析法
  3、平法取中法  取关键字平方后的中间几位为哈希地址;
  4、折叠法    将关键字分割成位数相同的几部分,然后取这几部分的叠加和(舍去进位)作为哈希地址;
  5、除留余数法  这是一种最简单也是最常用的方法
  6、随机数法   当关键字长度不等时采用此法比较恰当
  处理冲突的方法:
    1、开放定址法
    2、在哈希法
    3、链地址法
    4、建立一个公共溢出区
  哈希表的装填因子  a = 表中填入的记录数n/哈希表的长度m
  哈希表的平均查找长度是a的函数,而不是n的函数,因此不管n多大,我们总可以选择一个合适的装填因子以便将平均查找长度限定在一个范围内。



数据结构之查找