给一个严格递增数列,函数Search_Bin(SSTable ST, KeyType key)用来二分地查找key在数列中的位置。
函数接口定义:

Search_Bin(SSTable ST, KeyType key)

其中ST是有序表,key是查找的值
裁判测试程序样例:

#include <stdio.h>
#include <stdlib.h>#define NOT_FOUND -1typedef int KeyType;typedef struct {KeyType key;
}SElemType;typedef struct {SElemType *elem;int length;
}SSTable;int Search_Bin(SSTable ST, KeyType key);int main () {SSTable T;scanf("%d", &T.length);T.elem = (SElemType *) malloc ((T.length + 1) * sizeof(SElemType));for(int i = 1; i <= T.length; ++ i)scanf("%d", &T.elem[i].key);KeyType key;scanf("%d", &key);int pos = Search_Bin(T, key);if(pos == NOT_FOUND) puts("NOT FOUND");else printf("%d\n", pos);return 0;
}
/* 你的代码将被嵌在这里 */

输入格式:

第一行输入一个数n,表示有序表的元素个数,接下来一行n个数字,依次为表内元素值。 然后输入一个要查找的值。
输出格式:

输出这个值在表内的位置,如果没有找到,输出"NOT FOUND"。
输入样例:

4
1 2 3 4
3

输出样例:

3

我的代码:

int Search_Bin(SSTable ST, KeyType key)
{int mid=0,a=1,b=ST.length;while(a<=b){mid=(a+b)/2;if(ST.elem[mid].key==key)return mid;if(ST.elem[mid].key>key)b=mid-1;if(ST.elem[mid].key<key)a=mid+1;}return -1;
}

6-2 折半查找的实现 (10 分)相关推荐

  1. 面向对象程序设计——Java语言 第3周编程题 查找里程(10分)

    面向对象程序设计--Java语言 第3周编程题 查找里程(10分) 题目内容 下图为国内主要城市之间的公路里程: 你的程序要读入这样的一张表,然后,根据输入的两个城市的名称,给出这两个城市之间的里程. ...

  2. 在数组中查找指定元素 (10分) PTA (C语言)

    7-2 在数组中查找指定元素 (10分) 输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入一个正整数 n (1<n<=10),然后输入n个 ...

  3. 在数组中查找指定元素 (10分)

    ** 在数组中查找指定元素 (10分)** 本题要求实现一个在数组中查找指定元素的简单函数. 函数接口定义: int search( int list[], int n, int x ); 其中lis ...

  4. PTA 7-1 在数组中查找指定元素 (10 分)

    输入一个正整数repeat (0<repeat<10),做repeat次下列运算: 输入一个正整数 n (1<n<=10),然后输入n个整数存入数组a中,再输入一个整数x,在数 ...

  5. 7-1 查找整数 (10 分)

    本题要求从输入的N个整数中查找给定的X.如果找到,输出X的位置(从0开始数):如果没有找到,输出"Not Found". 设计思路: 转载于:https://www.cnblogs ...

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

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

  7. 分治法 —— 折半查找(递归与非递归)

    折半查找(二分查找) 假设为递增有序 基本思路 时间复杂度:O(log2 n) 设a[low-high]是当前查找区间,首先确定该区间的中点位置mid=L(low+high)/2I,然后将待查的k值与 ...

  8. 写几个函数: ①输入10个职工的姓名和职工号; ②按职工号由小到大顺序排序,姓名顺序也随之调整; ③要求输入一个职工号,用折半查找法找出该职工的姓名,从主函数输入要查找的职工号,输出该职工姓名。

    写几个函数: ①输入10个职工的姓名和职工号: ②按职工号由小到大顺序排序,姓名顺序也随之调整: ③要求输入一个职工号,用折半查找法找出该职工的姓名,从主函数输入要查找的职工号,输出该职工姓名. #i ...

  9. 7-1 查找成绩并折算后输出 (10分)

    7-1 查找成绩并折算后输出 (10分) 查找成绩并折算后输出 从键盘输入若干人名.地名或者国家名,要求按照升序排序之后输出.输入格式: 7(表示将输入7个人名或者地名)Zhang3Li4Wang5M ...

  10. 7-4 单词替换 (10分)——单词查找替换方法

    7-4 单词替换 (10分) 设计一个对字符串中的单词查找替换方法,实现对英文字符串中所有待替换单词的查找与替换. 输入格式: 首行输入母字符串,第二行输入查询的单词,第三行输入替换后的单词. 输出格 ...

最新文章

  1. 【转】文件恢复神器extundelete
  2. 聚类(上)K-mean算法
  3. R语言对用电负荷时间序列数据进行K-medoids聚类建模和GAM回归
  4. 解决The total number of locks exceeds the lock table size错误
  5. Python稳基修炼的经典案例9(计算机二级、初学者必会turtle库例题)
  6. 咏南中间件+开发框架中秋国庆大促
  7. 1200万!硅谷AI大牛一年赚够北京二环一套房
  8. makefile 生成.o_要学好 C 语言 / C++ ,Makefile 可少不了
  9. 加权最小二乘(wls)滤波算法原理及实现
  10. 记录一次面试中的HTTP请求相关问题
  11. AutoJs学习-微信群发和引流
  12. 微信小程序上传图片使用canvas添加水印
  13. Win10——使用WePE工具U盘重装系统
  14. C++单例模式(懒汉模式)实现
  15. python写抽奖转盘_python实现大转盘抽奖效果
  16. 计算机主机不启动的故障,电脑不能正常启动的原因及解决方法
  17. 国产超级英雄逆袭好莱坞
  18. 华为HCNA技术配置小型公司网络
  19. 二叉平衡树平衡方法(RR、LL、RL、LR)
  20. Android开发笔记(序)

热门文章

  1. 代码写的太烂了,所以我干不下去了
  2. android 录屏工具,ShareREC for Android全系统手机录屏软件原理解析
  3. 热浪寒浪统计在python上的实现
  4. 多拨软件测试,记一次折腾苏州移动宽带多拨的过程
  5. Android Studio如何创建VR项目。
  6. Elasticsearch中间隔查询slop原理
  7. ActiveMQ失效转移(Failover)
  8. [易飞]一张领料单单身仓库quot;飞了quot;引起的思考
  9. ZenTao不支持Win8.1问题解决
  10. 基于MRCP的FreeSWITCH ASR/TTS开发