[Java] 蓝桥杯BASIC-13 基础练习 数列排序

问题描述
给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200
输入格式
第一行为一个整数n。
第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。
输出格式
输出一行,按从小到大的顺序输出排序后的数列。
样例输入
5
8 3 6 4 9
样例输出
3 4 6 8 9

package base13;

import java.util.Scanner;

//快速排序
public class Main {
    public static void main(String[] args) {
        int[] nums = new int[200];
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        in.nextLine();
        in.close();
        for (int i = 0; i < n; i++) {
            nums[i] = in.nextInt();
        }
        qickSort(nums, 0, n - 1);
        for (int i = 0; i < n; i++) {
            System.out.println(nums[i]);
        }
    }

    //快速排序
    private static void qickSort(int[] a, int l, int h) {
        if (h > l) {
            int p = sort(a, l, h);
            qickSort(a, l, p - 1);
            qickSort(a, p + 1, h);
        }
    }

    private static int sort(int[] a, int l, int h) {
        int x = a[l], i = l, j = h + 1;
        while (true) {
            while (x > a[++i]) ;
            while (x < a[--j]) ;
            if (i > j) {
                break;
            }
            int temp = a[i];
            a[i] = a[j];
            a[j] = temp;
        }
        a[l] = a[j];
        a[j] = x;
        return j;
    }

}

 

你可能感兴趣的:(蓝桥杯,Java)