问题描述
给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200
输入格式
第一行为一个整数n。
第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。
输出格式
输出一行,按从小到大的顺序输出排序后的数列。
样例输入
5
8 3 6 4 9
样例输出
3 4 6 8 9
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
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; } } |
❤ 点击这里 -> 订阅《PAT | 蓝桥 | LeetCode学习路径 & 刷题经验》by 柳婼
❤ 点击这里 -> 订阅《从放弃C语言到使用C++刷算法的简明教程》by 柳婼
❤ 点击这里 -> 订阅PAT甲级乙级、蓝桥杯、GPLT天梯赛、LeetCode题解离线版
