4-10 二分查找 (20分)
来源:互联网 发布:date php 格式化 编辑:程序博客网 时间:2024/06/05 17:44
4-10 二分查找 (20分)
本题要求实现二分查找算法。
函数接口定义:
Position BinarySearch( List Tbl, ElementType K );
其中 List 结构定义如下:
typedef int Position;typedef struct LNode *List;struct LNode { ElementType Data[MAXSIZE]; Position Last; /* 保存线性表中最后一个元素的位置 */};
Tbl 是用户传入的一个线性表,其中_ ElementType_ 元素可以通过>>>、======、<<<进行比较,并且题目保证传入的数据是递增有序的。函数 BinarySearch 要查找K在 Tbl 中的位置,即数组下标(注意:元素从下标1开始存储)。找到则返回下标,否则返回一个特殊的失败标记 NotFound 。
裁判测试程序样例:
#include <stdio.h>#include <stdlib.h>#define MAXSIZE 10#define NotFound 0typedef int ElementType;typedef int Position;typedef struct LNode *List;struct LNode { ElementType Data[MAXSIZE]; Position Last; /* 保存线性表中最后一个元素的位置 */};List ReadInput(); /* 裁判实现,细节不表。元素从下标1开始存储 */Position BinarySearch( List Tbl, ElementType K );int main(){ List Tbl; ElementType K; Position P; Tbl = ReadInput(); scanf("%d", &K); P = BinarySearch( Tbl, K ); printf("%d\n", P); return 0;}/* 你的代码将被嵌在这里 */
输入样例1:
512 31 55 89 10131
输出样例1:
2
输入样例2:
326 78 23331
输出样例2:
0
点击访问PTA测验
/* 你的代码将被嵌在这里 */Position BinarySearch( List Tbl, ElementType K ){ if(Tbl->Last>MAXSIZE)Tbl->Last=MAXSIZE-1; int left=1,right=Tbl->Last;//Last->实际地址 while(left<=right){// int mid=(left+right)/2; if(Tbl->Data[mid]==K)return mid; if(Tbl->Data[mid]>K)right=mid-1; else left=mid+1; } return NotFound;}
0 0
- 4-10 二分查找 (20分)
- 4-10 二分查找 (20分)
- 4-1 二分查找 (20分)
- 二分查找(20 分)
- 数据结构与算法题目集(中文)4-10 二分查找 (20分)
- PTA数据结构与算法题目集(中文)4-10 二分查找 (20分)
- 分冶-二分查找
- 二分查找分C++实现
- 4-10 二分查找
- 4-10 二分查找
- 4-10 二分查找
- 对分查找(二分查找)
- 分截排序之二分查找
- 算法-对分查找(二分查找)C++实现
- 5-20 查找整数 (10分)
- 算法4-二分查找
- 多分查找法的性能分析--二分还是其他?
- 4-4 链式表的按序号查找 (10分)
- 4-7 在一个数组中实现两个堆栈 (20分)
- 程序猿之路--Android基础
- 4-8 求二叉树高度 (20分)
- 数值字节与范围
- 4-9 二叉树的遍历 (25分)
- 4-10 二分查找 (20分)
- AndroidN SurfaceView新特性
- 4-11 先序输出叶结点 (15分)
- 【opencv练习09 - 图片线性加权融合】
- 5-1 最大子列和问题
- VIJOS 1391 SPFA
- 5-2 一元多项式的乘法与加法运算 (20分)
- JavaSE 多线程 死锁示例
- 【opencv练习08 - 改变图像亮度】