首页 > 其他分享 >洛谷1923 排序

洛谷1923 排序

时间:2022-11-11 15:01:08浏览次数:75  
标签:arr 洛谷 int 快排 数组名 1923 排序

洛谷1923

错误

这道题用的快排,但是非常卡时间,最后将快排优化,

新学

stl中 nth_element(数组名,数组名+第k小元素,数组名+元素个数);将第k小元素找出,最后直接输出就行

//判断k所在的某一段位置
if(k<=y)
    qsort1(l,y);
    else if(x<=k)
    qsort1(x,r);
    else{
        cout<<arr[k];
        exit(0);
    }

代码

#include<iostream>
#include<cstdio>
using namespace std;
int k;
int arr[50000005];
void qsort1(int l,int r){
    int mid = arr[(l+r)/2];
    int x=l,y=r;
    do{
        while(arr[x]<mid)x++;
        while(arr[y]>mid)y--;
        if(x<=y){
            swap(arr[x],arr[y]);
            x++;y--;
        }
    }while(x<=y);

    if(k<=y)
    qsort1(l,y);
    else if(x<=k)
    qsort1(x,r);
    else{
        cout<<arr[k];
        exit(0);
    }
}
int main(){
    int n;
    scanf("%d%d",&n,&k);
   
    for(int i = 0 ;i<n;i++){
       scanf("%d",&arr[i]);
    }
    qsort1(0,n-1);
}

标签:arr,洛谷,int,快排,数组名,1923,排序
From: https://www.cnblogs.com/tsqo/p/16880478.html

相关文章

  • String类型List排序
    一、升序:@Testpublicvoidtest1(){//创建ArrayList集合对象List<String>al=newArrayList<>();//往集合里添加数据al.add("aa");al.add("bb");......
  • sql查询二级分类按照字符串排序
    1.函数解释len()是用来计算字符串长度left()是用来截取指定部分的字符串2.sql语句:select id,pid from tborderbycase    whenpid=0thenleft('00000',5-len(id)......
  • 34. 在排序数组中查找元素的第一个和最后一个位置
    34.在排序数组中查找元素的第一个和最后一个位置classSolution{publicint[]searchRange(int[]nums,inttarget){if(nums.length==0)returnnew......
  • ListView中排序和分组(GroupTemplate)的使用实例演示
    .aspx代码如下:<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="8_Group_Sort.aspx.cs"Inherits="Group_Sort"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0......
  • Java实现算法之--选择排序
        选择排序也是比较简单的一种排序方法,原理也比较容易理解,它与冒泡排序的比较次数相同,但选择排序的交换次数少于冒泡排序。冒泡排序是在每次比较之后,若比较的两个......
  • MapReduce实战之辅助排序和二次排序案例
    辅助排序和二次排序案例1)需求有如下订单数据订单id商品id成交金额0000001Pdt_01222.80000001Pdt_0625.80000002Pdt_03522.80000002Pdt_04122.40000002Pdt_05722.40000003Pdt......
  • 冒泡排序
    publicint[]sortMaopao(int[]arry){for(inti=0;i<arry.length;i++){for(intj=0;j<arry.length-1-i;j++){......
  • 力扣 81. 搜索旋转排序数组 II
    81.搜索旋转排序数组II已知存在一个按非降序排列的整数数组 nums ,数组中的值不必互不相同。在传递给函数之前,nums 在预先未知的某个下标 k(0<=k<nums.leng......
  • 洛谷B2079求出e的值
    解题思路:注意变量的类型就ok了,没什么不容易理解的地方#include<stdio.h>intmain(){doublenum=1,sum=1;longlongb=1,n;scanf("%d",&n);for(inti=1;i<=n......
  • 归并排序
     分治思想,采用递归实现,代码如下: ......