实验报告3

1.问题.

写出两种检索算法:在一个排好序的数组T[1…n]中查找x,如果x在T中,输出x在T的下标j;如果x不在T中,输出j=0。

2.解析

顺序查找:
从数组的第一个数开始按顺序查找,将每一个数与x相比,如果相等输出下标j,如果到结尾了还没找到,则输出j=0。

二分查找法:
将x和数组中间值T[m]比较,相等则查找成功,如果不相等则看x大于还是小于T[m],逐渐缩小范围,直到查找到下标j。若查找结束,得出x不在数组中,返回j=0。

3.设计

顺序查找:
1.设置哨兵;
2.设置查找的起始下标i=n;
3.若r[i]=k,则返回当前i的值;否则,继续比较前一个记录

二分查找法:
1.设置初始查找区间:low=1;high=n;
2.测试查找区间[low,high]是否存在,若不存在则查找失败
3.若存在,取中间点mid=(low+high)/2;比较k与r[mid];有以下三种情况:
3.1若k>r[mid],low=mid+1;在右半区继续进行查找,判断2;
3.2若k<r[mid],low=mid-1;在左半区继续进行查找,判断2;
3.3若k=r[mid],则查找成功,返回表中的mid值。

4.分析

顺序查找:O(n)
二分查找:O(logn)

5.源码

https://github.com/Lillyooo/-Lily/commit/61fc6b927c1fa70d245998aaec7cefd6f87c0c6d

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值