您的位置:首页 > 游戏 > 游戏 > 西安大雁塔高多少米_效果图制作步骤_semantic_郑州网站推广

西安大雁塔高多少米_效果图制作步骤_semantic_郑州网站推广

2025/1/8 15:45:09 来源:https://blog.csdn.net/2301_79398241/article/details/144811552  浏览:    关键词:西安大雁塔高多少米_效果图制作步骤_semantic_郑州网站推广
西安大雁塔高多少米_效果图制作步骤_semantic_郑州网站推广

6-1 二分查找

分数 20

全屏浏览

切换布局

作者 陈越

单位 浙江大学

本题要求实现二分查找算法。

函数接口定义:

Position BinarySearch( List L, ElementType X );

其中List结构定义如下:

typedef int Position;
typedef struct LNode *List; 
struct LNode { ElementType Data[MAXSIZE]; Position Last; /* 保存线性表中最后一个元素的位置 */ 
};

L是用户传入的一个线性表,其中ElementType元素可以通过>、==、<进行比较,并且题目保证传入的数据是递增有序的。函数 BinarySearch 要查找 X 在 Data 中的位置,即数组下标(注意:元素从下标1开始存储)。找到则返回下标,否则返回一个特殊的失败标记 NotFound

裁判测试程序样例:

#include <stdio.h>
#include <stdlib.h>#define MAXSIZE 10
#define NotFound 0
typedef int ElementType;typedef int Position;
typedef struct LNode *List;
struct LNode {ElementType Data[MAXSIZE];Position Last; /* 保存线性表中最后一个元素的位置 */
};List ReadInput(); /* 裁判实现,细节不表。元素从下标1开始存储 */
Position BinarySearch( List L, ElementType X );int main()
{List L;ElementType X;Position P;L = ReadInput();scanf("%d", &X);P = BinarySearch( L, X );printf("%d\n", P);return 0;
}/* 你的代码将被嵌在这里 */

输入样例1:

5
12 31 55 89 101
31

输出样例1:

2

输入样例2:

3
26 78 233
31

输出样例2:

0

鸣谢宁波大学 Eyre-lemon-郎俊杰 同学修正原题!

代码长度限制

16 KB

时间限制

100 ms

内存限制

64 MB

注意:如果下面函数体中 return NotFound; 改为 return 0;会莫名其妙多出两个报错点,应该是 PTA 测评系统内部的问题

// 2024/12/29 OK
Position BinarySearch( List L, ElementType X )
{int left = 1, right = L->Last;while (left <= right) {int mid = (left + right) / 2;if (L->Data[mid] == X) {return mid;} else if (L->Data[mid] < X) {left ++;} else {right --;}}return NotFound;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com