zoukankan      html  css  js  c++  java
  • 786.第k个数

    给定一个长度为n的整数数列,以及一个整数k,请用快速选择算法求出数列从小到大排序后的第k个数。

    输入格式

    第一行包含两个整数 n 和 k。

    第二行包含 n 个整数(所有整数均在1~109109范围内),表示整数数列。

    输出格式

    输出一个整数,表示数列的第k小数。

    数据范围

    1n1000001≤n≤100000,
    1kn1≤k≤n

    输入样例:

    5 3
    2 4 1 5 3
    

    输出样例:

    3
    #include <iostream>
    
    using namespace std;
    
    const int N = 100010 ;
    
    int n,k;
    int q[N];
    int quick_sort (int l, int r, int k)
    {
        if( l >= r ) return q[l];
        
        int x = q[l],i = l - 1, j = r + 1;
        
        while (i<j)
        {
            while (q[ ++i ]<x);
            while (q[ --j ]>x);
            if( i < j ) swap(q[i],q[j]);
        }    
        
            int sl = j - l + 1;
            if( k <= sl ) return quick_sort( l, j, k);
            
            return quick_sort( j + 1, r, k-sl);
            
        
        
    }
    
    int main ()
    {
        cin >> n >> k;
        
        for(int i = 0; i<=n; i++) cin >> q[i];
        
        cout << quick_sort( 0 , n - 1 , k );
        
        return 0;
    }
  • 相关阅读:
    Pthon3各平台的安装
    scrapy爬虫 简单入门
    自动定时打卡7.13
    centos7+python3+selenium+chrome
    在Ubuntu安装kubernetes
    在Ubuntu下安装Jenkins
    在Ubuntu安装Docker
    猫眼100 爬虫
    python 招聘数据分析
    mysql8.0.19忘记密码
  • 原文地址:https://www.cnblogs.com/zhouxiaoyue/p/14035082.html
Copyright © 2011-2022 走看看