1024. 排序
Input Format
第一行:正整数nn,表示需要排序的数字的个数;
第二行:nn个正整数,代表需要排序的数字。
Output Format
输出共一行,nn个正整数,为从小到大排序后的结果。
Sample Input
3 2 1 3
Sample Output
1 2 3
Limits
n<10000n<10000,时间限制1000ms,内存限制30000kb。
解:普通的排序算法,可以自己写,可以用API中的现成方法
冒泡实现
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] data = new int[n]; for (int i = 0; i < n; i++) data[i] = sc.nextInt(); for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - i - 1; j++) { if (data[j] > data[j + 1]) { int temp = data[j]; data[j] = data[j + 1]; data[j + 1] = temp; } } } for (int i = 0; i < n; i++) System.out.print(data[i] + " "); } }
快排实现
import java.util.Scanner; public class Main { static int[] data; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); data = new int[n]; for (int i = 0; i < n; i++) data[i] = sc.nextInt(); quick(0, n - 1); for (int i = 0; i < n; i++) System.out.print(data[i] + " "); } static void quick(int head, int tail) { if (head < tail) { int p = sort(head, tail); quick(head, p - 1); quick(p + 1, tail); } } static int sort(int head, int tail) { int left = head; int rieht = tail + 1; int key = data[head]; while (true) { while (data[++left] < key && left < tail) ; while (data[--rieht] > key) ; if (left >= rieht) break; int temp = data[left]; data[left] = data[rieht]; data[rieht] = temp; } data[head] = data[rieht]; data[rieht] = key; return rieht; } }
API实现
import java.util.Arrays; import java.util.Scanner; public class Main { static int[] data; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); data = new int[n]; for (int i = 0; i < n; i++) data[i] = sc.nextInt(); Arrays.sort(data); for (int i = 0; i < n; i++) System.out.print(data[i] + " "); } }