查找

本文介绍了线性表的顺序查找与折半查找方法,详细解释了折半查找的时间复杂度。此外,还探讨了二叉排序树的定义及其查找算法,包括查找成功的条件及查找失败的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、线性表的查找

1.顺序查找

从表的一端开始,依次将记录的关键字和给定的值进行比较,若某个记录的关键字和给定值相等,则查找成功;反之,若扫描整个表后,仍未找到关键字和给定值相等的记录,则查找失败。

2.折半查找

又称二分查找,要求线性表必须采用顺序存储结构,并且表中元素按关键字有序排列。
查找过程为:
a. 如果给定值和中间记录的关键字相等,则查找成功。
b. 如果给定值大于或者小于中间记录的关键字,则在表中大于或小于中间记录的那一半中查找。
c. 重复操作,直至查找成功,或在某一步中查找区间为空,则代表查找失败。

function search(st,key){
    var low=1;
    var high=st.length;
    while(low<=high){
        var mid=(low+high)/2;
        if(key==st[mid]) return key;
        else if(key<st[mid]) high=mid-1;
        else low=mid+1;
    }
    return 0;
}

注:循环执行的条件是low<=high,时间复杂度log2(n)。

二、树表的查找

1.二叉排序树的定义

a. 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
b. 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
c. 它的左、右子树也分别为二叉排序树。

2.二叉排序树的查找

1) 若二叉排序树为空,则查找失败,返回空指针。
2) 若二叉排序树非空,将给定值key与根结点的关键字进行比较:
a. 若key等于关键字,则查找成功,返回根节点地址;
b. 若key大于关键字,则递归查找右子树;
c. 若key小于关键字,则递归查找左子树。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值