首页 > 其他分享 >二分查找

二分查找

时间:2023-04-01 20:14:08浏览次数:33  
标签:二分 num int mid len else while 查找

#include <stdio.h>

#define N 100010

int n, q;
int array[N]; // N的范围来确定数组开的范围(0,n],开的范围要比n大,10
// 第一次出现位置
int num_1(int q[], int len, int x)
{
    int l = -1, r = len;
    while (l + 1 < r)
    {
        int mid = (l + r) / 2;
        if (q[mid] < x)
        {
            l = mid;
        }
        else
        {
            r = mid;
        }
    }
    if (q[r] == x)
        return r;
    else
        return -1;
}
// 第二次出现位置
int num_2(int q[], int len, int x)
{
    int l = -1, r = len;
    while (l + 1 < r)
    {
        int mid = (l + r) / 2;
        if (q[mid] <= x)
        {
            l = mid;
        }
        else
        {
            r = mid;
        }
    }
    if (q[l] == x)
        return l;
    else
        return -1;
}
int main()
{
    scanf("%d %d", &n, &q);
    for (int i = 0; i < n; i++)
    {
        scanf("%d", &array[i]);
    }
    while (q--)
    {
        int x;
        scanf("%d", &x);
        int res1 = num_1(array, n, x);
        int res2 = num_2(array, n, x);
        printf("%d %d\n", res1, res2);
    }
    return 0;
}

/*输入:
6 3
1 2 2 3 3 4
3
4
5
*/

/*输出:
3 4
5 5
-1 -1
*/

 

标签:二分,num,int,mid,len,else,while,查找
From: https://www.cnblogs.com/gjkt2001/p/17279240.html

相关文章

  • 1688用图片精准查找商品?
       今天CC来和小伙伴唠唠识图找物的这个话题。相信很多购物爱好者也好,电商狂人也好,对这个话题并不会感觉到陌生。因为随着很多电商平台的迭代更新,也是很多的平台都有这个功能,它可以帮助我们快速查找到我们无法辨别或者叫不上名字的商品,极大减少了我们通过搜索筛选的时间。但......
  • HJ65 查找两个字符串a,b中的最长公共子串_穷举查找字符串相同子串
    思路:1、穷举查找字符串子串2、把相同子串存入数组3、生成新数组存储对应index的子串长度4、返回第一个最长数组index,通过index查找子串输出。1importsys2s1=sys.stdin.readline().strip()3s2=sys.stdin.readline().strip()4iflen(s2)<len(s1):5temp=s1......
  • 有关斐波那契查找-Java实现
    其实对于斐波那契查找,是一种新的查找思想,对与其实用性我持怀疑态度;主要就是,黄金风分割得思想;而斐波那契数列正好符合这一特性;其中的思想不过多赘述;主要事可以培养算法的思想;1/***2*fib查找3*@paramnum目标排查找数组4*@paramnumSearch目标数......
  • C语言编程练习_查找数组中不重复的数字
    题目描述:给定一个整形数组空间arr,数据中包含两个一样的数字若干,只有一个数字是单独一个。设计一个函数把这个出现一次的数字返回出来。 解决方案一:穷举法:假设arr数组中的每个元素都是重复的。也可能是不重复的(效率差)#include<stdio.h>intfun1(intarr[],intlen){  ......
  • 分巧克力(二分法)
    题目描述儿童节那天有K位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。小明一共有N块巧克力,其中第i块是Hi×Wi的方格组成的长方形。为了公平起见,小明需要从这N块巧克力中切出K块巧克力分给小朋友们。切出的巧克力需要满足:形状是正方形,边长是整数;......
  • 二分查找变形
    packagetest;importjava.util.Arrays;publicclassN172{ publicstaticvoidmain(String[]args){ int[]a={1,34,4,4,5,4,6,2345,0}; Arrays.......
  • sql server 查找阻塞
    CREATEPROCEDURE[dbo].[sp_who_lock]ASBEGINDECLARE@spidINT,@blINT,@intTransactionCountOnEntryINT,......
  • Node.js:模块查找,引用及缓存机制
    1.Node.js的模块载入方式与机制Node.js中模块可以通过文件路径或名字获取模块的引用。模块的引用会映射到一个js文件路径,除非它是一个Node内置模块。Node的内置模块公开了......
  • Centos查找、删除僵尸进程
    CentOS1、查找僵尸进程命令:ps-A-ostat,ppid,pid,cmd|grep-e'^[Zz]'  说明:因为状态为z或者Z的进程为僵尸进程,所以我们使用grep抓取stat状态为zZ进程2、批......
  • linux在多个文件中查找指定字符串
    Linux使用grep命令检索多个文件点击查看代码grep<searchingstring><patternsearchingfile>如果我要检索当前所有md文件中的Hello关键字,可以这么用点击查看代......