首页 > 其他分享 >2023.9.14 整数二分排序

2023.9.14 整数二分排序

时间:2023-09-14 23:22:57浏览次数:42  
标签:二分 14 int cin mid while 2023.9

 1 # 二分
 2 
 3 ## 整数二分
 4 
 5 ~~~c++
 6 //区间[l,r]被划分成[l,mid]和[mid+1,r]时使用
 7 int test01(int l,int r)
 8 {
 9     while(l<r)
10     {
11         int mid = (l+r)/2;
12         bool check(int mid);//check判断mid是否满足x性质
13         if(check(mid)) r = mid;//mid满足,即要找的x在[l,mid]区间内
14         else l = mid +1;//mid不满足,即要找的x在[mid+1,r]区间内
15     }
16     return 1;
17 }
18 //区间[l,r]被划分成[l,mid-1]和[mid,r]时使用
19 int test02(int l,int r)
20 {
21     while(l<r)
22     {
23         int mid = (1+r+1)/2;//mid - 1 = (l+r)/2;
24         bool check(mid);
25         if(check(mid)) l = mid;
26         else r = mid-1;
27     }
28 }
29 ~~~
30 
31 ~~~c++
32 #include <iostream>
33 using namespace std;
34 const int N = 10e6+10;
35 int m, n;
36 int q[N];
37 
38 int main()
39 {
40     cin >> n>>m;
41     for (int i = 0; i < n; i++)  cin >> q[i];
42     
43     while (m--)
44     {
45         int x; cin >> x;
46         int l = 0;
47         int r = n - 1;
48         while (l < r)
49         {
50             int mid = (l + r)/2;
51             if (q[mid] >= x) r = mid;
52             else l = mid + 1;
53         }//判断第一种边界情况
54         if (q[l] != x) cout << "-1 -1" << endl;
55         else
56         {
57             cout << l << " ";
58             int l = 0, r = n - 1;
59             while (l < r)
60             {
61                 int mid = (l + r + 1)/2;
62                 if (q[mid] <= x) l = mid;
63                 else r = mid - 1;
64             }//判断第二种边界情况
65             cout << l << endl;
66         }
67     }
68     return 0;
69 }

 

标签:二分,14,int,cin,mid,while,2023.9
From: https://www.cnblogs.com/muzhaodi/p/17703806.html

相关文章

  • 2023/09/14
     classSolution{public:vector<int>twoSum(vector<int>&nums,inttarget){for(inti=0;i<nums.size();i++){for(intj=i+1;j<nums.size();j++){if(nums[i]+nums[j]==targe......
  • 9.14
    今天学习原码反码补码原码反码补码是计算机存储一个具体数字的编码方式。java虚拟机中整数有byte、short、int、long四种分别表示8位、16位、32位、64位有符号整数。整数用补码表示第一位表示符号位,其余位表示值正数的反码跟原码相等反码是原码在符号位不变的基础上,其余各位......
  • 2023年9月14日
    效果图图1图2浮动显示信息、导航栏HTML<!DOCTYPEhtml><html> <head> <metacharset="utf-8"/> <title>2023年9月14日</title> <linkrel="stylesheet"href="./css/index_style.css"> </head> <b......
  • 9月14号周四
    今天是一天的满课,上午上刘立嘉老师的统一建模课程,学到了对于以后工作中一些软件工程工作的事情。上午还上了体育课,还被老师说我的乒乓球拍是烧火棍,在后面老师在所有人面前是要刚才的烧火棍时我勇敢站上去。下午上刘丹老师的数据结构,边听课边坐力扣的题目,不得不说,手机敲代码属实有......
  • 2023/9/14
    今天上午学习了面向对象方法,UML的诞生和标准化及应用范围、“4+1”构架,用例图基础,对面向对象有了更深一步的认识,同时也了解到了一些面向对象需要的知识。体育课上学习了篮球的运球。下午数据结构学习了单链表的增删改查,以及循环链表和双向链表,对链表学习进行了一定的复习,对算法的......
  • 2023.9.14
    数据结构今天学习了单链表的创建,首先学习了单链表的头插法,学习到单链表的创建是一个动态结构,整个可用储存空间可以为多个链表共同享用,每个i链表占用的空间不需要提前分配划定,而是由系统按时生成,因此,建立线性表的链式存储结构的过程就是一个动态生成链表的过程。前插法就是通过将新......
  • 每日总结|9.14-一个人也要活得像一支队伍
    今天上课,我想了想觉得单纯的复刻说明每天做了什么并不能体现出自己的收获,我应该再细化,或者是因为我还是没有太多的收获,所以细化不下来,我应该更踏实一些。今天我做了件事1、课上收获2、hadoop,复习简单的增删改查。3、其他===================================== 1、UML的学......
  • 914打卡_课上问题验证
    JAVA的基本运行单位是方法。程序的执行始终从main方法开始,每个独立的功能都可以通过方法来实现。类由以下组成:字段(成员变量):用于存储对象的数据。方法(成员函数):用于定义对象的行为。构造方法:用于初始化对象。初始化块:用于执行类的初始化操作。内部类:定义在其他类内部的类。变......
  • 大二快乐日记9.14
    今天还是一样快乐。数据结构把链表的印象加深。离散数学一堆证明过程不过大同小异。百度了很多eclipase的编程和设置。因为有时候调用一些系统类不行。并且学了一些实现方法。晚上写了会动手动脑并且起了一个很长的标题。最后在泰坦陨落和好兄弟们联机。谁不想穿一套机甲呢?......
  • 20230914-python爬取数据写入到excel
    python爬取数据写入到excel1。查看是否安装了相应的插件 piplist2。查看是否安装了  pandas     (安装命令在cmd中安装,pipinstallpandas)3。查看是否安装 openpyxl      pipinstallopenpyxl ####写入excelimportpandasaspddf=pd.DataFra......