查找

静态查找和动态查找

静态查找:数据集合稳定,不需要添加,删除元素的查找操作。
动态查找:数据集合在查找的过程中需要同肘添加或删除元素的查找操作。

查找结构

对于静态查找来说,我们不妨可以用线性表结构组织数据,这样可以使用顺序查找算法,如果我们再对关键字进行排序,则可以使用折半查找算法或斐波那契查找算法等来提高查找的效率。
对于动态查找来说,我们则可以考虑使用二叉排序树的查找技术,另外我们还可以使用散列表结构来解决一些查找问題。

顺序查找

顺序查找又叫线性查找,是最基本的查找技术,查找过程是:从第一个(或者最后一个)记录开始,逐个进行记录的关键字和给定值进行比较,若某个记录的关键字和给定值相等,则查找成功。如果查找了所有的记录仍然找不到与给定值相等的关键字,则查找不成功。

折半查找

  while( low <= high)  
  {
       mid=(low+high)/2;    
       if( str[mid] = key )        
             return mid;
       if( str[mid] < key  )
            low=mid+1;   //在后半序列中查找     
       if( str[mid] > key  )
            high=mid-1;   //在前半序列中查找      
  }  

插值查找(按比例查找)

  while( low <= high) 
     {      
         mid=low+(key-a[low])/(a[high]-key)*(high-low);   //插值查找的唯一不同点  
         if( str[mid] = key )                  
             return mid;       
         if( str[mid] < key  )          
             low=mid+1;   //在后半序列中查找
         if( str[mid] > key  )           
             high=mid-1;   //在前半序列中查找     
     } 

斐波那契查找

斐波那契数列(F[k]) : 1,1,2,3,5,8,13,21,34,55,89
在这里插入图片描述

线性索引查找

稠密索引

在这里插入图片描述

分块索引

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值