数据结构与算法基础-查找

本文详细介绍了查找算法的基础,包括线性表的顺序查找、折半查找、分块查找,以及树表中的二叉排序树和平衡二叉树。同时,探讨了散列表的构造、冲突处理方法及其查找效率分析,指出散列表技术在平均性能上的优势。
摘要由CSDN通过智能技术生成

数据结构与算法基础

查找

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

  • 查找:根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素或(记录)。

  • 关键字:用来标识一个数据元素(或记录)的某个数据项的值。

    • 主关键字:可唯一地表示一个记录的关键字是主关键字;
    • 次关键字:反之,用识别若干记录的关键字是次关键字。
  • 查找表可以分为两类

    • 静态查找表

      仅作查询

    • 动态查找表

      可以作插入和删除

  • 查找算法的评价指标:

    • 关键字的平均比较次数,也称平均查找长度ASL

线性表的查找

顺序查找(线性查找)
  • 顺序表或线性链表表示的静态查找表

  • 表内元素之间无序

算法:
  • 在顺序表中查找值为key的数据元素(从最后一个元素开始比较)

  • int Search_Seq(SSTable ST,KeyType key)
    {
         
    	for(i = ST.length;i>=1;--i)
    	{
         
    		if(ST.R[i].key==key)
    		{
         
    			return i;
    		}
    	}
    	return 0;
    }
    
  • 其他形式:

    int Search_Seq(SSTable ST,KeyType key)
    {
         
    	for(i = ST.length;ST.R[i].key!=key;--i)
    	{
         
    		if(i<=0)
    		{
         
    			break;
    		}
    	}
    	if(i>0)
    	{
         
    		return 0;
    	}
    	else return 0;
    }
    
改进
  • 把待查关键字key存入表头(“哨兵”“监视哨”),从后往前进行比较,可以面区查找过程重每一步都要检测是否查找完毕,加快速度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值