数据结构-查找-总结归纳知识点

//第八章 查找
 
//基于线性表的查找

// 1.顺序查找法
//思想:所给的关键字和表中元素的关键字逐个比较
分为:设置监视哨和不设监视哨
监视哨:r[0]防止越界

//2.折半查找法
要求:顺序储存结构(不能链表),按照关键字大小有序排列(正序和逆序)
思想:利用mid=(high+low)/2(整数). 判断条件:low<=high;

//3.分块查找法
要求:列表分为子表,最后一个子表长度可以不满;索引表每个索引对应每个块(子表)的起始位置,记录每个块的最大(最小)
的关键字;索引表按照关键字有序排列


//基于树的查找法

//二叉排序树:元素大小:左子树,根,右子树,递归定义
二叉排序树的删除略显复杂:
1.不存在,不动
2.存在
2.1.叶子节点:直接删,free掉
2.2只有左右子树一支:孩子改到删去位置(孩子变为双亲),free
2.3.左右孩子都有:
2.3.1处理1:
    利用中序遍历算法找到将要删除结点p的直接前驱s,p左子树变为其双亲的左孩子,右子树变为其前驱s的右孩子 
2.3.2处理2: 
    直接删除结点p,p的前驱s代替p,free(s),s的左孩子为s的双亲的右孩子,p的右孩子为s的右孩子
    
//平衡二叉排序树:左子树右子树高度绝对值之差小于等于1
插入算法:LL,RR,LR,RL型

//计算式查找法:hash

//hash:
1.数字分析法:选择合适位数的分布均匀的关键字 
2.平方取中法:求关键字平方值,取中间,重复概率低 
3.分段叠加法:折叠法,移位法
4.除留余数法:取余除数为小于等于表长的最大素数 
5.伪随机数法:
    
处理冲突!:
1.开放地址法(再散列法):
1.1.线性探测再散列:di = 1,2,3......
1.2.二次探测再散列:di = 1^2, -1^2, 2^2, -2^2,...... 
1.3.伪随机探测再散列: ...

2.再哈希法
3.链地址法:
4.建立公共溢出区:分为基本表和溢出表

你可能感兴趣的:(数据结构与算法--用C语言描述)