首页 > 其他分享 >w6-3 怪物的身高(快速排序)

w6-3 怪物的身高(快速排序)

时间:2023-04-19 21:56:49浏览次数:41  
标签:身高 end int w6 排序 first

#include <iostream>
using namespace std;
int N,m,A[5000005];
//用scanf,printf卡常
template<class T>
void QuickSort(T a[],int first,int end){
    int i=first,j=end;
    while(i<j){
        while(i<j&&a[i]<a[j]){//寻找比a[i]大的第一个数
            j--;
        }
        if(i<j){
            swap(a[i++],a[j]);//交换且i往前
        }
        while(i<j&&a[i]<a[j]){//寻找比a[j]小的第一个数
            i++;
        }
        if(i<j){
            swap(a[i],a[j--]);//交换且j往后
        }
    }
    if(m<j) QuickSort(a,first,--j);//当要排的位数小于j,在前半部分找
    else if(i<m) QuickSort(a,++i,end);
    else{
        printf("%d",a[j]);//当当前找的就是第m位输出并退出
        exit(0);
    }
}
int main() {
    scanf("%d%d",&N,&m);
    for(int i=0;i<N;++i){
        scanf("%d",&A[i]);
    }
    QuickSort(A,0,N-1);
    return 0;
}

 

标签:身高,end,int,w6,排序,first
From: https://www.cnblogs.com/lijunjie03/p/17334765.html

相关文章

  • P2661 [NOIP2015 提高组] 信息传递-拓扑排序+DFS深度优先遍历
    题目描述有 n 个同学(编号为 1 到 n )正在玩一个信息传递的游戏。在游戏里每人都有一个固定的信息传递对象,其中,编号为 i 的同学的信息传递对象是编号为 Ti​ 的同学。游戏开始时,每人都只知道自己的生日。之后每一轮中,所有人会同时将自己当前所知的生日信息告诉各自的信......
  • 编译器指令重排序问题(使用编译器屏障)
    环境:Windows平台:win7_64旗舰版、VS2019Linux平台:CentOSLinuxrelase7.2.1511、GCC_4.8.5-4场景:为了提高性能,编译器会对指令进行重新排序,在多线程环境下指令的乱序执行会造成无法预测的行为。开始:一、指令重排序实例inta=0,b=0;voidtest(){a=......
  • 冒泡排序
    问题描述:键入N个整数进行升序排序。 1.第一行输入N表示输入的数字的个数  2.用循环输入数字;  3.定义i控制比较次数,定义j控制每次比较的次数;  4.如果后面的数小于前面的数,将两数位置交换。 #include<iostream>usingnamespacestd;intmain(){ intN,a[1000]; ......
  • el-table拖动排序
    html<el-tableref="multipleTable":data="tableData"align="left"borderclass="mytable"row-key="id"><el-table-column:index="indexMethod"align="center"type=&q......
  • 1.8冒泡排序
    1.问题描述把N个整数按照升序排列2.问题分析。利用数组储存,然后相邻数组进行排序。3.代码#include<iostream>#include<string>usingnamespacestd;intmain(){ intn[10]; inti,j; inttemp;  cout<<"请输入十个数字!"<<endl; for(i=0;i<10;i++){ cin>&......
  • 推排序 Verilog实现原理
    引言推排序常常应用在操作系统的任务调度中,尝试使用硬件对堆排序进行实现,在实现的过程中不使用function和tasks语法,即真·硬件实现参考的博客也就这一个博客有介绍堆排序的Verilog实现原理堆排序还需要复习一遍吗?我肯定是要的菜鸟-堆排序图解排序算法(三)之堆排序可以......
  • MinGW-w64 for Windows
    MinGW1.下载https://www.mingw-w64.org/https://winlibs.com/MinGW-w64、UCRT和MSVCRT是Windows平台上常用的C/C++运行库,它们有以下不同点:MinGW-w64:是一个基于GCC的编译器套件,可以用于编译Windows平台上的C/C++程序。MinGW-w64使用的是POSIX标准的运行库,因......
  • 第六周--冒泡排序
    题目描述读入N个整数,利用冒泡排序法对这些数排序,输出排序后的N个数,两个数之间用空格间隔。这里排序指的是升序。输入格式两行,第一行一个正整数N,表示待排序的数的个数。第二行为N个整数。输出格式一行,排序后的N个数。输入输出样例输入 542451输出 124......
  • 一千个需求如何快速排序?MoSCoW排序法用上了!【No.2】
    什么是MoSCoW排序法?莫斯科排序法是一种优先级排序法,用于管理需求、任务或功能列表。该方法可以帮助团队确定哪些需求、任务或功能是最重要的,并决定在特定时间段内是否需要完成它们。所以在对需求进行排序时,可以从以下维度考虑:能为业务目标产出高价值的需求优先做;节省时间、人......
  • 一些排序相关典题
    HDU6231&P2824HDU6231K-thNumber给你一个长度为\(n\)的序列\(A\),有一个初始为空的序列\(B\),把\(A\)中所有子区间的第\(K\)大加入序列\(B\)中,求\(B\)中的第\(M\)大\(n\le10^5,K\len\)考虑二分答案,假设当前答案是\(x\),把原序列中所有\(<x\)的元素变成\(......