第k小数字

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static int quickSort(int[] arr, int l, int r, int k){
        if (l == r) {
            return arr[l];
        }
        // 划分为左边小右边大的序列
        int mid = arr[l + r >> 1];
        int i = l - 1, j = r + 1;
        while (i < j){
            while (arr[++i] < mid){};
            while (arr[--j] > mid){};
            if (i < j){
                int tmp = arr[i];
                arr[i] = arr[j];
                arr[j] = tmp;
            }
        }
        // 如果k是比mid大,则在右边,只需要在右边执行k-Sl,如果k是比mid小,则只需要在左边执行k
        int Sl = j - l + 1;
        if (k <= Sl){
            return quickSort(arr, l, j, k);
        }else {
            return quickSort(arr, j+1, r, k-Sl);
        }
    }

    public static void main(String[] args) throws IOException {
        //10 10
        //50 43 63 97 30 89 89 94 30 33
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n,k;
        String nANDk = br.readLine();
        n = Integer.parseInt(nANDk.split(" ")[0]);
        k = Integer.parseInt(nANDk.split(" ")[1]);
        String[] strs = br.readLine().split(" ");
        int[] arr = new int[n];
        for (int i = 0; i < n; i++) {
            arr[i] = Integer.parseInt(strs[i]);
        }
        System.out.println(quickSort(arr,0,n-1,k));
    }
}

 

posted @   妖码  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
点击右上角即可分享
微信分享提示