数据结构C语言版第九章作业答案,数据结构(c语言版)题集答案——第九章_查找...

本文详细介绍了C语言中几种常见的查找算法实现,包括顺序查找、递归折半查找及折半查找变种,并分析了它们的时间复杂度。通过具体代码示例展示了如何在有序表上进行高效的数据查找。

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

数据结构题集(c语言版)答案及部分代码

第九章 查找

9.25

int Search_Sq(SSTable ST,int key)//在有序表上顺序查找的算法,监视哨设在高下标端 {

ST.elem[ST.length+1].key=key;

for(i=1;ST.elem[i].key>key;i++);

if(i>ST.length||ST.elem[i].keyreturn i;

}//Search_Sq

分析:本算法查找成功情况下的平均查找长度为ST.length/2,不成功情况下为ST.length.

9.26

int Search_Bin_Recursive(SSTable ST,int key,int low,int high)//折半查找的递归算法

{

if(low>high) return 0; //查找不到时返回0

mid=(low+high)/2;

if(ST.elem[mid].key==key) return mid;

else if(ST.elem[mid].key>key)

return Search_Bin_Recursive(ST,key,low,mid-1);

else return Search_Bin_Recursive(ST,key,mid+1,high);

}

}//Search_Bin_Recursive

9.27

int Locate_Bin(SSTable ST,int key)//折半查找,返回小于或等于待查元素的最后一个结点号 {

int *r;

r=ST.elem;

if(keyelse if(key>=r[ST.length].key) return ST.length;

low=1;high=ST.length;

while(low<=high)

{

mid=(low+high)/2;

if(key>=r[mid].key&&keyreturn mid;

else if(keyelse low=mid;

} //本算法不存在查找失败的情况,不需要return 0;

}//Locate_Bin

9.28

typedef struct {

int maxkey;

int firstloc;

} Index;

typedef struct {

int *elem;

int length;

Index idx[MAXBLOCK]; //每块起始位置和最大元素,其中idx[0]不利用,其内容初始化为{0,0}以利于折半查找

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值