Acwing---786. 第k个数

1.题目

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

输入格式
第一行包含两个整数 n 和 k。

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

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

数据范围
1 ≤ n ≤ 100000 , 1 ≤ k ≤ n 1≤n≤100000 , 1≤k≤n 1n100000,1kn

输入样例:

5 3
2 4 1 5 3

输出样例:

3

2.基本思想

快速排序

3.代码实现

 
import java.io.BufferedInputStream;
import java.util.Scanner;

public class Main {
   

    public static void main(String[] args) {
   
        Scanner sc = new Scanner(new BufferedInputStream(System.in));
        int n = sc.nextInt();
        int k = sc.nextInt();
        int[] arr = new int[n];
        for (int i = 0; i < n; i++) arr[i] = sc.nextInt();
        qucik_sort(arr, 0, n - 1);
            System.out.println(arr[k-1]);
    }

    private static void qucik_sort(int[] arr, int l, int r) {
   
        //判断边界
        if (l >= r) return;

        int x = arr[l], i = l - 1, j = r + 1;
        while (i < j) {
   
            do {
   
                i++;
            } while (arr[i] < x);
            do {
   
                j--;
            } while (arr[j] > x);
            //交换
            if (i < j) {
   
                int temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
        //递归子序列
        qucik_sort(arr, l, j);
        qucik_sort(arr, j + 1, r);
    }
}

相关推荐

  1. Acwing---786. k个数

    2024-01-26 08:32:02       33 阅读
  2. AcWing786. k个数

    2024-01-26 08:32:02       11 阅读
  3. AcWing 178:K短路 ← A* 算法

    2024-01-26 08:32:02       37 阅读
  4. 序列的 k 个数(c++题解)

    2024-01-26 08:32:02       23 阅读
  5. AcWing 787. 归并排序(模板题详解)

    2024-01-26 08:32:02       32 阅读
  6. Acwing---788.逆序对的数量

    2024-01-26 08:32:02       31 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-26 08:32:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-26 08:32:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-26 08:32:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-26 08:32:02       18 阅读

热门阅读

  1. Flask 之旅 (一)

    2024-01-26 08:32:02       31 阅读
  2. python的Flask生产环境部署说明照做成功

    2024-01-26 08:32:02       25 阅读
  3. 开源计算机视觉库OpenCV详解

    2024-01-26 08:32:02       30 阅读
  4. 如何保证消息队列不丢失消息(以kafka为例)

    2024-01-26 08:32:02       25 阅读
  5. 计算机网络第三章习题(谢希仁)

    2024-01-26 08:32:02       28 阅读
  6. 8-Docker网络命令之connect

    2024-01-26 08:32:02       28 阅读