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 要查找 XData 中的位置,既数组下标(注意:元素从下标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 二分查找相关推荐

  1. PTA 函数题 二分查找(C语言)

    本题要求实现二分查找算法. 函数接口定义: Position BinarySearch( List L, ElementType X ); 其中List结构定义如下: typedef int Posi ...

  2. c语言函数调用排序用插入法,C语言:编写查找和排序函数(二分查找,冒泡排序,选择排序法,插入排序)...

    任务代码: 二分查找数组的一个数字:(函数法) #include int binarySearch(int a[],int len,int key) { int low=0,high=len-1,mi ...

  3. 用二分查找在一个有序数组中找数

    有序数组:a[]={1,2,3,4,5,6,7,8,9,10} 二分查找:首先在数组中找到中间位置的数组下标mid=(start+end)/2,将所要找的数x与mid进行比较: 若x>mid,则 ...

  4. 程序员面试金典 - 面试题 10.03. 搜索旋转数组(二分查找)

    1. 题目 搜索旋转数组.给定一个排序后的数组,包含n个整数,但这个数组已被旋转过很多次了,次数不详. 请编写代码找出数组中的某个元素,假设数组元素原先是按升序排列的.若有多个相同元素,返回索引值最小 ...

  5. 7-60 二分查找法之过程 (10 分)

    7-60 二分查找法之过程 (10 分) 本题要求使用二分查找法,在给定的n个升序排列的整数中查找x,并输出查找过程中每一步的中间结果.如果数组a中的元素与x的值相同,输出相应的下标(下标从0开始): ...

  6. PTA 7-13 列车调度 (25 分) C语言和C++实现(二分查找)

    7-13 列车调度 (25 分) 火车站的列车调度铁轨的结构如下图所示. 两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道.每趟列车从入口可以选择任意一条 ...

  7. PTA - 二分查找法

    二分查找法 题目:用二分法在一个有序数列{1,2,3,4,5,6,7,8,9,10}中查找key值,若找到key则输出其在数组中对应的下标,否则输出not found. 输入格式: 直接输入一个要查找 ...

  8. 1.1.10 从二分查找BinarySearch开启算法学习之路---《java算法第四版》

    文章目录 0.前言 1.功能 2.示例 有两个名单tinyW.txt和tinyT.txt,将tinyT.txt名单中不在tinyW.txt的数据打印出来 ① 实现原理 ② 实现代码 ③ 性能分析 0. ...

  9. 程序员面试金典 - 面试题 10.05. 稀疏数组搜索(二分查找)

    1. 题目 稀疏数组搜索.有个排好序的字符串数组,其中散布着一些空字符串,编写一种方法,找出给定字符串的位置. 示例1:输入: words = ["at", "" ...

最新文章

  1. CF1178H Stock Exchange
  2. 贪心——跳跃游戏 II(Leetcode 45)
  3. Python获取本机所有IP地址
  4. 神经网络用作分类器(附代码matlab)
  5. if else if与if if语句的区别
  6. Openstack 笔记概要
  7. MyBatis出现参数索引越界
  8. 中国式家长计算机怎么学,中国式家长开局学习技巧详解 大神教你如何完美开局...
  9. 当“大数据”落地,当技术接轨商业
  10. STM32F4-Discovery资料汇总
  11. 九龙证券|长线资金整体加仓 青睐能源科技材料等板块
  12. 脚本恢复Win10照片查看器
  13. douyin网页版登录加密分析(一)
  14. 如何进行接口参数化?
  15. PCIe TLP的格式
  16. word怎么打拼音声调的三种方法介绍
  17. srsLTE安装、运行及测试
  18. 2021最新 腾讯云从零搭建PHP运行环境
  19. DTU应用场景,你了解多少?
  20. 使用Qt打造属于自己的串口调试助手

热门文章

  1. 递归算法(JS实现代码)
  2. Unity Metaverse(四)、接入环信IM SDK 实现用户登录注册
  3. realpath和access函数浅谈
  4. i html设置为不倾斜,css如何不让字体倾斜?
  5. 求50以内的全部素数
  6. 访问网站浏览器左上角提示:windows 没有足够信息,不能验证该证书
  7. ZEMAX知识点:景深概念及计算公式推导
  8. 国科大 - 高级人工智能(沈华伟等)- 期末复习 - 试卷
  9. 集合2:方法和运算符—适用set/frozenset(上)
  10. endnote 中文论文中的et al处理