当前位置: 首页 > news >正文

第k小的数的分治算法

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.zskr.cn/news/37843.html

相关文章:

  • 一个灵感:思维的断章
  • 10.30总结
  • 世界计划:无法歌唱的初音未来
  • 一、RK3562板卡上手
  • 2025 年 11 月数控激光去毛刺机,冲压件去毛刺机,精密去毛刺机厂家最新推荐,实力品牌深度解析采购无忧之选!
  • AT ARC156C Tree and LCS 题解
  • CSPT漏洞浅析
  • Awesome Neovim - 精选Neovim插件大全
  • 不会AI编程?没关系!这几个框架也让你也能开发AI聊天助手!
  • 别只怪客户端宕机!还有这些导致 Redis 分布式锁“死锁”的原因 - 公众号
  • 第13天(中等题 滑动窗口)
  • 我重生了,重生到了CSP前——高中物理电学速通
  • 第二章算法作业
  • Linux模板机优化实操
  • 渗透知识靶场实战
  • 游记 CSP-S2025
  • 2025 年 11 月 CBN 砂轮厂家最新推荐:结合剂迭代 + 精度优化,高耐用产品选购指南
  • 2025 年 11 月 CBN 砂轮厂家最新推荐:磨料优化 + 工艺升级,高适配产品选购指南
  • 2025 年 11 月运动木地板厂家最新推荐,配方精研与效能焕新!—— 实力品牌深度解析采购无忧之选!
  • 【软考】信安中级密码学专题
  • 2025 年 11 月 PVC 地板厂家最新推荐,聚焦成分安全与功效持续的优质产品解析
  • 可视化水表数据并实现用水量超标警报的技术方案
  • 闲话 25.11.2
  • 第二次软件工程作业
  • Pointnet++论文学习
  • 工具---短视频下载神器
  • ABC430
  • 自定义Linux 备份命令 backup 【from claude.ai Haiku 4.5】
  • 打造你自己的 Linux 备份命令:快速、高效、易用 【from claude.ai Haiku 4.5】
  • CVE-2025-12176漏洞分析:未记录的管理账户安全风险