首页 > 其他分享 >PTA 6-13 折半查找

PTA 6-13 折半查找

时间:2024-08-05 15:24:21浏览次数:17  
标签:折半 Bin 13 int KeyType 样例 Search PTA SSTable

6-13 折半查找(15分)

给一个严格递增数列,函数int Search_Bin(SSTable T, KeyType k)用来二分地查找k在数列中的位置。

函数接口定义:

int  Search_Bin(SSTable T, KeyType k)

其中T是有序表,k是查找的值。

裁判测试程序样例:


#include <iostream>
using namespace std;

#define MAXSIZE 50
typedef int KeyType;

typedef  struct                     
{ KeyType  key;                                             
} ElemType;  

typedef  struct
{ ElemType  *R; 
  int  length;
} SSTable;                      

void  Create(SSTable &T)
{ int i;
  T.R=new ElemType[MAXSIZE+1];
  cin>>T.length;
  for(i=1;i<=T.length;i++)
     cin>>T.R[i].key;   
}

int  Search_Bin(SSTable T, KeyType k);

int main () 
{  SSTable T;  KeyType k;
   Create(T);
   cin>>k;
   int pos=Search_Bin(T,k);
   if(pos==0) cout<<"NOT FOUND"<<endl;
   else cout<<pos<<endl;
   return 0;
}

/* 请在这里填写答案 */

###输入格式:

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

###输出格式:

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

输入样例:

5
1 3 5 7 9
7

输出样例:

4

输入样例:

5
1 3 5 7 9
10

输出样例:

NOT FOUND

解决方案:

int  Search_Bin(SSTable T, KeyType k)
{
    int head = 1, tail = T.length, mid = 0;
    while(head <= tail)
    {
        mid = (head + tail) / 2;
        if(k == T.R[mid].key)
            return mid;
        else if(k > T.R[mid].key)
            head = mid + 1;
        else
            tail = mid - 1;
    }
    return 0;
}

标签:折半,Bin,13,int,KeyType,样例,Search,PTA,SSTable
From: https://blog.csdn.net/qq_50907107/article/details/140920928

相关文章

  • (链表基础)PTA习题11-8 单链表结点删除
    题目要求:本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中所有存储了某给定值的结点删除。链表结点定义如下:structListNode{intdata;ListNode*next;};函数接口定义:structListNode*readlist();structListNode*deletem(structListNode*L,......
  • LeetCode 136场双周赛 Q4. 标记所有节点需要的时间
    这道题也是一道比较经典的树形dp模板题;太久没写了,赛时一眼就想到了,但是敲的时候摸索了半天,还是没敲出来;首先看题目,需要求出无向树上从每个节点为树根节点到其他所有节点中最长路径的值,然后每条边的距离其实就是,如果目的地是奇数距离为1,目的地是偶数距离为2那么这个逻辑很简单,其......
  • P4248 [AHOI2013] 差异
    传送门题目描述给定一个长度为\(n\)的字符串\(S\),令\(T_i\)表示它从第\(i\)个字符开始的后缀。求\[\displaystyle\sum_{1\leqslanti<j\leqslantn}\operatorname{len}(T_i)+\operatorname{len}(T_j)-2\times\operatorname{lcp}(T_i,T_j)\]其中,\(\text{len}(a)\)表示......
  • 【ESP01开发实例】-ESP-01驱动DS1307/DS1321实时时钟模块
    ESP-01驱动DS1307/DS1321实时时钟模块文章目录ESP-01驱动DS1307/DS1321实时时钟模块1、DS1307/DS1321介绍2、硬件准备与接线3、代码实现本文将介绍如何使用ESP8266(ESP-01)模块、DS3231RTC或DS1307RTC和16×2LCD构建实时时钟。时间和日期显示在......
  • 134. 加油站【 力扣(LeetCode) 】
    一、题目描述  在一条环路上有n个加油站,其中第i个加油站有汽油gas[i]升。  你有一辆油箱容量无限的的汽车,从第i个加油站开往第i+1个加油站需要消耗汽油cost[i]升。你从其中的一个加油站出发,开始时油箱为空。  给定两个整数数组gas和cost,如果你可以......
  • 135. 分发糖果【 力扣(LeetCode) 】
    一、题目描述  n个孩子站成一排。给你一个整数数组ratings表示每个孩子的评分。  你需要按照以下要求,给这些孩子分发糖果:每个孩子至少分配到1个糖果。相邻两个孩子评分更高的孩子会获得更多的糖果。  请你给每个孩子分发糖果,计算并返回需要准备的最少糖果数......
  • iptables基本认识
    iptables概念名词:容器:存放东西表(table):存放链的容器,防火墙最大的概念链(chain):存放规则的容器规则(policy):允许或拒绝规则,书写的防火墙条件就是各种防火墙规则。防火墙四表五链4表:filter表、nat表、raw表、mangle表filter:过滤规则表、根据预定义的规则过滤符合条件的......
  • 1388、STM32单片机心率(脉搏)MAX30102血氧体温检测阈值报警无线蓝牙远程(程序+原理图+
    毕设帮助、开题指导、技术解答(有偿)见文未 目录方案选择单片机的选择显示器选择方案一、设计功能二、实物图三、原理图四、程序源码五、PCB图六、proteus仿真程序流程图:原理图文字讲解:参考论文:资料包括:需要完整的资料可以点击下面的名片加下我,找我要资源压缩......
  • 1386、STM32单片机心率(脉搏)体温检测阈值设置报警无线蓝牙远程设计(程序+原理图+PCB
    毕设帮助、开题指导、技术解答(有偿)见文未 目录方案选择单片机的选择显示器选择方案一、设计功能二、实物图三、原理图四、程序源码五、PCB图六、proteus仿真程序流程图:原理图文字讲解:参考论文:资料包括:需要完整的资料可以点击下面的名片加下我,找我要资源压缩......
  • LeetCode 1387. Sort Integers by The Power Value
    原题链接在这里:https://leetcode.com/problems/sort-integers-by-the-power-value/description/题目:Thepowerofaninteger x isdefinedasthenumberofstepsneededtotransform x into 1 usingthefollowingsteps:if x iseventhen x=x/2if x is......