查找小结

折半查找(二分查找)  
    1.顺序表 等概率
    2.low mid high
    3.判定二叉树
    4.递归到非递归属于第一种 简单的循环可以解决,所以在递归里面的出口条件不需要while语句。

1) 递归方法实现: 

int BSearch(elemtype a[],elemtype x,int low,int high) 

/*在下届为low,上界为high的数组a中折半查找数据元素x*/ 



int mid; 

if(low>high) return -1; 

mid=(low+high)/2; 

if(x==a[mid]) return mid; 

if(x<a[mid]) return(BSearch(a,x,low,mid-1)); 

else return(BSearch(a,x,mid+1,high)); 



2) 非递归方法实现: 

int BSearch(elemtype a[],keytype key,int n) 



int low,high,mid; 

low=0;high=n-1; 

while(low>=high) 



mid=(low+high)/2; 

if(a[mid].key==key) return mid; 

else if(a[mid].key<key) low=mid+1; 

else high=mid-1; 



return -1; 

}  



计算式的查找方法---哈希法

1.构造方法
数字分析  平方取中  分段叠加  除留余数  伪随机数
2.处理冲突的方法
开放地址  再哈希法  链地址法  建立公共溢出区
3.性能分析
ASLunsucc  ASLsucc  

动态查找表

    一:二叉排序树
        1.小左大右 
        2.其删除的两种方法


    二:平衡二叉树(AVL)
        1.左旋和右旋
        
    三:B-树
        1.文件系统所用
        2.平衡的多路查找树(类似于二叉排序树,只是每个结点有多个孩子)
        3.其插入和删除涉及到分裂和合并(由于每层的孩子个数是有限制的)


    四:键树
        1.存储方法:
            1)双链树----孩子兄弟链表(每个结点存它的第一个孩子,它的右面的兄弟)
            2Trie树-----多重链表


分块查找

    1.又叫索引顺序表查找
    2.折半查找+顺序查找
        块与块之间是有序的 + 块内元素是无序的

次优查找树

    1.在非等概率的前提下。
    2.PH值(权值*层取和)近似最小,不是最优查找树。
    3.eg:
        关键字:   A                 B                C           D    E
        权值:0    1                 30               2           29   3
              0    1                 31(30+1)       33(31+2)  62   65
                  64((65-1)-0)   33((65-31)-1)1           30   26
    
        取值:                                        C

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值