PTA 6-10 二分查找
PTA 6-10 二分查找 (20分)
题目链接 —>link
本题要求实现二分查找算法。
函数结构定义
Position BinarySearch( List L, ElementType X );
其中 List 结构定义如下:
typedef int Position;
typedef struct LNode *List;
struct LNode {ElementType Data[MAXSIZE];Position Last; /* 保存线性表中最后一个元素的位置 */
};
L 是用户传入的一个线性表,其中 Elementype 元素可以通过>,==,<进行比较,并且题目保证传入的数据是递增有序的。函数 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
题解:
Position BinarySearch( List L, ElementType X ){int left=1; int right=L->Last;int mid=(left+right)/2;while(left<=right){if(X>L->Data[mid]){left=mid+1;}else if(X<L->Data[mid]){right=mid-1;}else{return mid;}mid=(left+right)/2;}return NotFound;
}
PTA 6-10 二分查找相关推荐
- PTA 函数题 二分查找(C语言)
本题要求实现二分查找算法. 函数接口定义: Position BinarySearch( List L, ElementType X ); 其中List结构定义如下: typedef int Posi ...
- c语言函数调用排序用插入法,C语言:编写查找和排序函数(二分查找,冒泡排序,选择排序法,插入排序)...
任务代码: 二分查找数组的一个数字:(函数法) #include int binarySearch(int a[],int len,int key) { int low=0,high=len-1,mi ...
- 用二分查找在一个有序数组中找数
有序数组:a[]={1,2,3,4,5,6,7,8,9,10} 二分查找:首先在数组中找到中间位置的数组下标mid=(start+end)/2,将所要找的数x与mid进行比较: 若x>mid,则 ...
- 程序员面试金典 - 面试题 10.03. 搜索旋转数组(二分查找)
1. 题目 搜索旋转数组.给定一个排序后的数组,包含n个整数,但这个数组已被旋转过很多次了,次数不详. 请编写代码找出数组中的某个元素,假设数组元素原先是按升序排列的.若有多个相同元素,返回索引值最小 ...
- 7-60 二分查找法之过程 (10 分)
7-60 二分查找法之过程 (10 分) 本题要求使用二分查找法,在给定的n个升序排列的整数中查找x,并输出查找过程中每一步的中间结果.如果数组a中的元素与x的值相同,输出相应的下标(下标从0开始): ...
- PTA 7-13 列车调度 (25 分) C语言和C++实现(二分查找)
7-13 列车调度 (25 分) 火车站的列车调度铁轨的结构如下图所示. 两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道.每趟列车从入口可以选择任意一条 ...
- PTA - 二分查找法
二分查找法 题目:用二分法在一个有序数列{1,2,3,4,5,6,7,8,9,10}中查找key值,若找到key则输出其在数组中对应的下标,否则输出not found. 输入格式: 直接输入一个要查找 ...
- 1.1.10 从二分查找BinarySearch开启算法学习之路---《java算法第四版》
文章目录 0.前言 1.功能 2.示例 有两个名单tinyW.txt和tinyT.txt,将tinyT.txt名单中不在tinyW.txt的数据打印出来 ① 实现原理 ② 实现代码 ③ 性能分析 0. ...
- 程序员面试金典 - 面试题 10.05. 稀疏数组搜索(二分查找)
1. 题目 稀疏数组搜索.有个排好序的字符串数组,其中散布着一些空字符串,编写一种方法,找出给定字符串的位置. 示例1:输入: words = ["at", "" ...
最新文章
- CF1178H Stock Exchange
- 贪心——跳跃游戏 II(Leetcode 45)
- Python获取本机所有IP地址
- 神经网络用作分类器(附代码matlab)
- if else if与if if语句的区别
- Openstack 笔记概要
- MyBatis出现参数索引越界
- 中国式家长计算机怎么学,中国式家长开局学习技巧详解 大神教你如何完美开局...
- 当“大数据”落地,当技术接轨商业
- STM32F4-Discovery资料汇总
- 九龙证券|长线资金整体加仓 青睐能源科技材料等板块
- 脚本恢复Win10照片查看器
- douyin网页版登录加密分析(一)
- 如何进行接口参数化?
- PCIe TLP的格式
- word怎么打拼音声调的三种方法介绍
- srsLTE安装、运行及测试
- 2021最新 腾讯云从零搭建PHP运行环境
- DTU应用场景,你了解多少?
- 使用Qt打造属于自己的串口调试助手