排序算法------练习1

1. 题目

2. 思路和题解

这道题其实就是用昨天总结的常用排序算法里的快速排序。因为每次经过划分操作之后,一定是可以确定出一个元素的最终位置,因此我们不需要全部排序完成,只需要某次划分的 q q q为倒数第 k k k个下标的时候,就已经确定了答案。

java 复制代码
class Solution {
    int quickselect(int[] nums, int left, int right, int k) {
        if (left == right) {
            return nums[k];
        }
        int x = nums[left], i = left - 1, j = right + 1;
        while (i < j) {
            do i++; while (nums[i] < x);
            do j--; while (nums[j] > x);
            if (i < j){
                int tmp = nums[i];
                nums[i] = nums[j];
                nums[j] = tmp;
            }
        }
        if (k <= j) return quickselect(nums, left, j, k);
        else return quickselect(nums, j + 1, right, k);
    }
    public int findKthLargest(int[] _nums, int k) {
        int n = _nums.length;
        return quickselect(_nums, 0, n - 1, n - k);
    }
}
相关推荐
Jerry38 分钟前
LeetCode 1047. 删除字符串中的所有相邻重复项
算法
可编程芯片开发3 小时前
基于霍尔传感器和PID控制器的有功功率检测控制系统simulink建模与仿真
算法
To_OC3 小时前
LC 17 电话号码的字母组合:我的回溯算法,就是从这道题开窍的
javascript·算法·leetcode
黒亱中旳4 小时前
Java AI 框架三国杀:Solon AI vs Spring AI vs LangChain4j 深度对比
java·人工智能·spring
网络工程小王4 小时前
[智能对话系统架构设计文档]
java·系统架构·langraph
alxraves4 小时前
医用超声远程会诊系统:会诊平台的核心架构与功能解析
java·人工智能·架构
带刺的坐椅4 小时前
用 Solon AI ReActAgent 落地智能客服工单处理
java·ai·llm·agent·solon·react-agent
我是坏垠5 小时前
Crypto、Cipher与Password:Java加密开发的三个核心概念
java·开发语言·python
white_ant5 小时前
JDK LTS 版本升级迁移注意事项大全
java·开发语言
战族狼魂6 小时前
GPT-5.6与Grok 4.5重磅发布
人工智能·算法·大模型·大语言模型