博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
6-2 折半查找的实现 (10 分)
阅读量:3907 次
发布时间:2019-05-23

本文共 1062 字,大约阅读时间需要 3 分钟。

给一个严格递增数列,函数Search_Bin(SSTable ST, KeyType key)用来二分地查找key在数列中的位置。

函数接口定义:

Search_Bin(SSTable ST, KeyType key)

其中ST是有序表,key是查找的值

裁判测试程序样例:

#include 
#include
#define NOT_FOUND -1typedef int KeyType;typedef struct { KeyType key;}SElemType;typedef struct { SElemType *elem; int length;}SSTable;int Search_Bin(SSTable ST, KeyType key);int main () { SSTable T; scanf("%d", &T.length); T.elem = (SElemType *) malloc ((T.length + 1) * sizeof(SElemType)); for(int i = 1; i <= T.length; ++ i) scanf("%d", &T.elem[i].key); KeyType key; scanf("%d", &key); int pos = Search_Bin(T, key); if(pos == NOT_FOUND) puts("NOT FOUND"); else printf("%d\n", pos); return 0;}/* 你的代码将被嵌在这里 */

输入格式:

第一行输入一个数n,表示有序表的元素个数,接下来一行n个数字,依次为表内元素值。 然后输入一个要查找的值。

输出格式:

输出这个值在表内的位置,如果没有找到,输出"NOT FOUND"。

输入样例:

4

1 2 3 4
3

输出样例:

3

我的代码:

int Search_Bin(SSTable ST, KeyType key){	int mid=0,a=1,b=ST.length;	while(a<=b)	{		mid=(a+b)/2;		if(ST.elem[mid].key==key)			return mid;		if(ST.elem[mid].key>key)			b=mid-1;		if(ST.elem[mid].key

转载地址:http://rdwrn.baihongyu.com/

你可能感兴趣的文章
自由软件基金会庆祝成立35周年
查看>>
网络知识 | 《图解TCP/IP》读书笔记(下)
查看>>
国产化之路-统信UOS /Nginx /Asp.Net Core+ EF Core 3.1/达梦DM8实现简单增删改查操作
查看>>
面试 .NET 开发,为什么也要考算法?
查看>>
BeetleX之TCP消息通讯Protobuf/TLS
查看>>
AA.Dapper升级了
查看>>
C#刷剑指Offer | 二叉树中和为某一值的路径
查看>>
你是个失败者,有什么资格说话?
查看>>
为什么我们总是「习惯性辩解」?
查看>>
.NET 异步解说
查看>>
Magicodes.IE 2.4发布
查看>>
程序员修神之路--它可能是分布式系统中最重要的枢纽
查看>>
如何理解Eating这个词?云原生与微服务专场介绍
查看>>
诊断日志知多少 | DiagnosticSource 在.NET上的应用
查看>>
Chrome正在启用HTTP/3,支持IETF QUIC
查看>>
简单聊聊AspNetCore的启动流程
查看>>
.NET架构小技巧(2)——访问修饰符正确姿势
查看>>
一站式Web开发套件BeetleX.WebFamily
查看>>
工作这几年所获、所感、所悟
查看>>
不想写脚本清理 mongodb 中的垃圾数据,ttlIndex 能帮到你!
查看>>