第k小的数的分治算法

news/2025/11/2 20:38:09/文章来源:https://www.cnblogs.com/mbup/p/19185382

include

using namespace std;
int x=100;
int rr(int b[],int left,int right)
{
int m=left,n=right+1;
int h=b[left];
while(1)
{
while(b[++m]<h&&m<right);
while(b[--n]>h);
if(m>=n)
{
break;
}
int change=b[m];
b[m]=b[n];
b[n]=change;
}
b[left]=b[n];
b[n]=h;
return n;
}
void sort(int b[],int left,int right,int pd)
{
//cout<<left<<" "<<right<<endl;
if(left>=right)
{x=b[right];
return;}
int new1=rr(b,left,right);
//cout<<new1<<" "<<b[new1]<<endl<<endl;
//cout<<new1<<endl;
//cout<<b[new1]<<endl;
if(new1==pd-1)
{
x=b[new1];
return;
}
else if(new1>pd-1)
{
sort(b,left,new1-1,pd);//new1-1
}
else
{
sort(b,new1+1,right,pd);
}
}
int main()
{
int a;
int pd;
int b[100000];
cin>>a;
cin>>pd;
for(int y=0;y<a;y++)
{
cin>>b[y];
//cout<<b[y]<<endl;
}
sort(b,0,a-1,pd);
cout<<x<<endl;
/for(int y=0;y<a;y++)
{
cout<<b[y]<<" ";
}
/
return 0;
}

1、首先选取数组第一个元素作为基准,将数组划分为两部分:左部分的元素是小于基准的,右部分的元素是大于等于基准的,最后返回基准的最终位置。然后进行递归查找,先计算这个基准是当前数组第几小的元素,若刚好等于k,就返回主元;若小于k,递归查找左子数组;若大于k递归查找右子数组。直至return一个程序要求的值——pd-1,返回该元素。
2、最好时间复杂度:O(n)
最坏时间复杂度:O(n²)
3、分治算法就是把一个问题分成若干个独立并且求解方法相同的子问题,一般通过递归求其最优解,再合并子问题。这个算法可以让解决问题变得更简单,当然不是所有问题都可以使用,需要具体分析。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/953787.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Day29-C:\Users\Lenovo\Desktop\note\code\JavaSE\Basic\src\com\reflect

单元测试 Junit单元测试框架package Basic.src.com.Junit;public class StringUtil {public static void printNumber(String name) {if (name == null) {System.out.println(0);return;//停掉方法}System.out.println…

k8s-Pod中的网络通信(3)

部署的pod都会涉及到和内外网络通信,我们部署的pod 有一个ip,这个IP 是集群内部的IP ,只能在集群内被访问,k8s中pod的网路通信是交给service来管理的,简称svc。负责将外部流量引入,和内部流量引出。 1.外部流量访…

一个灵感:思维的断章

一个灵感:思维的断章 它来时,没有预兆。 不是在逻辑的链条上规行矩步,也不是在记忆的仓库里按图索骥。它诞生于一片更为辽阔、更为混沌的模糊空间。 那片空间,是意识的背景辐射,是思想形成之前的星云。那里,概念…

第十届中国大学生程序设计竞赛 哈尔滨站(CCPC 2024 Harbin Site)

第十届中国大学生程序设计竞赛 哈尔滨站(CCPC 2024 Harbin Site)比赛链接 Review 因为下周就要“一起哈啤”,所以这周末来 VP 去年的“一起哈啤”,然而已经一个多月没写代码了! 开题顺序依旧,看了个 J 感觉还挺可…

CSP-S 回顾

开考后发现自己穿了一个绒秋裤,考场上要被热死了,不断通过喝水降低体温。 $1min$ 第一题一下想到$DP和反悔贪心$,还好学了(汗) $1min 1s$否决掉了$DP$ $20min$ 奶龙考试时遇到了一些问题: 优先队列pair<int,p…

https://heylink.me/tizihacks/

https://heylink.me/tizihacks/https://heylink.me/tizihacks/

2025CSP-J游记

今年是最后一次打J组了,考的还可以。 上考场了,心想必将 J组 \(AK\),我带着信心又有点慌进考场了。 先看 \(T_1\) \(T_1\) 我感觉隔壁同学(好像是华辰的)语文挺好,看题好快,迅速开打。 \(应该是“最难的题”了吧…

通达信:引用函数 - Leone

DRAWNULL 无效数返回无效数。用法: DRAWNULL例如: IF(CLOSE>REF(CLOSE,1),CLOSE,DRAWNULL)表示下跌时不画线。 BACKSET 向前赋值用法: BACKSET(X,N),若X非0,则将当前位置到N周期前的数值设为1. 例如: BACKSET(CLO…

项目架构

聊天机器人项目架构

CSP总结

DAY-1 机房里萦绕着一种特有的氛围,我复习了 \(wiki\) 上的数学与 \(DP\) 章节(但并没有用到)。 DAY1 8点到校,或许是前一天没睡好的缘故,在车上就想睡觉,于是在原本几乎全车人都很活跃的时间段里没有什么参与。…

AI泡沫再思考:技术革命与投资狂潮的真相

本文探讨了当前AI领域的投资泡沫现象与技术发展前景,分析了AGI实现时间表、就业市场影响以及初创企业生存率等关键问题,指出技术突破与市场震荡并存的复杂性。重新审视AI泡沫 | Daniel Miessler 为什么重大崩盘、AGI…

[群表示论]基本概念

取基础域为 \(\mathbb k\). 令 \(G\) 是一个群,同态 \(\rho\colon\ G\longrightarrow GL(V)\) 给出 \(G\) 的表示 \((V,\rho)\),其中 \(V\) 是线性空间. 我们称 \(V\) 是 \(G-\)模. 令 \(V\) 是 \(G-\)模,\(W\) 是 …

P14362 [CSP-S 2025] 道路修复

题目大意 给定 \(n\) 个点,\(m\) 条边的无向图且有边权,有 \(k\) 个额外点,每个额外点向这 \(n\) 个点连边,且额外点有点权,求最小生成树。 \(n\leq 1e4\),\(m\leq 1e6\),\(k\leq 10\)。 Sol 从考场思路改了一点…

10.30总结

1.早点休息了明天去泰山

基于 Maxwell 实现 MySQL 数据实时迁移到 Mongodb

在 DB 运维层而非应用层实现需求,以降低应用层的业务侵入性及性能影响。 maxwell 是一款 ETL 工具,基本原理是 实时解析 MySQL 的 binlog 丢到相应的 MQ 中供具体业务逻辑去消费。 比如最典型的一种大数据日志路径:…

CSP2025-S 坠机记

CSP2025-S 坠机记 省流:未能完成 AK 的心愿。初赛随便考的,94 分。 复赛依然是在七高,成功在 14:20 抵达教室,发现我所在的机房电脑性能要烂一些,然而键盘要好一些,应该是好事。位置是靠窗,比较好,开考前准备写…

世界计划:无法歌唱的初音未来

标题是骗你点进来的。 Day 0 上午爽爽玩神秘构造小游戏,连砍到 C 不知道多少。 然后写了点 AGC 题,感觉都很水啊,自己强爆了。 中午回去刷本,fgo 真特么好玩。 下午进考场,发现自己的座位附近散布了一堆熟人,但貌…

11.2 每日一题 赦免战俘

本题要求将一个矩阵分为四个子矩阵,在将四个子矩阵不断继续分成个子矩阵,直到无法分出,并且每次对左上角的矩阵进行处理。 本题可用dfs对矩阵不断进行划分如图所示,我们的目标为对每次划分出来的矩阵的左上角进行处…

jenkins安装排错

jenkins安装排错[root@localhost ~]# docker history jenkins/jenkins:2.497-jdk17 IMAGE CREATED CREATED BY SIZE COMMENT 2cef2c7f7799 8 months ago…