题解 | 【模板】排序

【模板】排序

https://www.nowcoder.com/practice/40bf74658879460bbf5f1bfe772e8580

import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int index = 0;
        int[] nums = new int[n];
        while (in.hasNextInt()) {
            nums[index] = in.nextInt();
            index++;
        }
        // mergeSort(nums);
            quickSortNum(nums, 0, n - 1);

        for (int i = 0; i < n; i++) {
            System.out.print(nums[i] + " ");
        }
    }

    // 快速排序
    private static void quickSortNum(int[] nums, int left, int right) {
        if (left < right) {
            int pivot = partition(nums, left, right);
            quickSortNum(nums, pivot + 1, right);
            quickSortNum(nums, left, pivot - 1);
        }
    }
    private static int partition(int[] arr, int low, int high) {
        int pivot = arr[low];
        int i = low + 1;
        for (int j = low + 1; j <= high; j++) {
            if (arr[j] < pivot) {
                swap(arr, i, j);
                i++;
            }
        }
        swap(arr, low, i - 1);
        return i - 1;
    }
    // ———————— 快速排序 ————————

    private static void swap(int[] arr, int i, int j) {
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }
}

全部评论

相关推荐

01-12 17:45
门头沟学院 Java
985废物一枚:就是问问你能不能接受北京的房租,hr也知道公司工资不高,大概率是要贴钱的
找实习记录
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务