LeetCode 912. 排序数组

image

思路#

手撕快速排序。

class Solution {
    public int[] sortArray(int[] nums) {
        // 手撕快速排序
        int left = 0, right = nums.length-1;
        quickSort(nums, left, right);
        return nums;
    }

    public void quickSort(int[] nums, int left, int right) {
        if(left >= right) return;

        // 随机选一个数当主元,randIndex表示该随机主元的下标
        int randIndex = new Random().nextInt(right-left+1)+left;
        swap(nums, left, randIndex);
        int pivot = nums[left];
        int i = left, j = right;
        while(i != j) {
            while(i < j && nums[j] >= pivot) j--;
            while(i < j && nums[i] <= pivot) i++; 
            swap(nums, i, j);
        }

        swap(nums, left, i);
        quickSort(nums, left, i-1);
        quickSort(nums, i+1, right);
    }

    public void swap(int[] nums, int i, int j) {
        int tmp = nums[i];
        nums[i] = nums[j];
        nums[j] = tmp;
    }
}
posted @   拾月凄辰  阅读(27)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
历史上的今天:
2020-05-27 Linux怎么完全删除用户
点击右上角即可分享
微信分享提示
主题色彩