问题描述
给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200
输入格式
第一行为一个整数n。
第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。
输出格式
输出一行,按从小到大的顺序输出排序后的数列。
样例输入
5
8 3 6 4 9
样例输出
3 4 6 8 9
求解:
NO.1
简单的数组排序,考虑到超时问题,决定采用排序最快的快速排序。
代码如下:
import java.util.Scanner;
/**
* @author 作者 : Cactus
* @version 创建时间:2018-2-13 下午03:35:32
*/
public class Main {
public static void main(String[] args){
int n;
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
int arr[] = new int[n];
for(int i = 0;i < n;i++){
arr[i] = sc.nextInt();
}
quickSort(arr,0,n-1);
for(int i = 0;i < n;i++){
System.out.print(arr[i]+" ");
}
}
private static void quickSort(int[] nums,int start,int end){
int temp,base;
int i = start ,j = end;
base = nums[start];
do{
while((nums[i] < base) && (i <end)){
i++;
}
while((nums[j] > base) && (j>start)){
j--;
}
if(i <= j){
temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
i++;
j--;
}
}while(i <= j);
if(start < j){
quickSort(nums,start,j);
}
if(i < end){
quickSort(nums,i,end);
}
}
}
测试结果如下: