4-10 二分查找
来源:互联网 发布:1024控台控制帕灯编程 编辑:程序博客网 时间:2024/06/06 05:12
本题要求实现二分查找算法。
函数接口定义:
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:
5
12 31 55 89 101 (PS:这里都是机器自动输入,是在ReadInput()函数里;
31
输出样例1:
2
输入样例2:
3
26 78 233
31
输出样例2:
0
———-代码实现
Position BinarySearch( List Tbl, ElementType K ){ int low = 1, high,mid; high = Tbl->Last; //这里不用写成MAXSIZE while(low<=high){ mid = (low+high)/2; if (Tbl->Data[mid] < K){ low = mid+1; } else if (Tbl->Data[mid] > K){ high = mid - 1; } else{ return mid; } } return NotFound;}
1 0
- 4-10 二分查找
- 4-10 二分查找
- 4-10 二分查找
- 4-10 二分查找 (20分)
- 4-10 二分查找 (20分)
- 算法4-二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 链表操作实例(创建节点,增加节点,倒序链表,销毁链表等)
- 银行取款程序 线程
- MIT6.824 Lab 3: Fault-tolerant Key/Value Service (1)
- bzoj 1646: [Usaco2007 Open]Catch That Cow 抓住那只牛 bfs
- 安装ubuntu16.04遇到错误-->无法将grub-efi-amd64-signed软件包安装到/target/中
- 4-10 二分查找
- BZOJ 1578 [Usaco2009 Feb]Stock Market 股票市场
- HDU2209+POJ3279 枚举+dfs
- java singleton
- nginx+tomcat+redis 负载均衡和session共享
- 【实战-Linux】--搭建CA认证中心实现https取证
- Tomcat怎么安装SSL证书方法教程(自主csr版)进阶篇(一)
- Spring事务配置
- codevs 1173 最优贸易 2009年NOIP全国联赛提高组(spfa)