试题 基础练习 数列排序
问题描述
给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200
输入格式
第一行为一个整数n。
第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。
输出格式
输出一行,按从小到大的顺序输出排序后的数列。
样例输入
5
8 3 6 4 9
样例输出
3 4 6 8 9
import java.util.Scanner;
public class yaode {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int[] a=new int[n];
for(int i=0;i<n;i++) {
a[i]=sc.nextInt();
}
quicksort(a,0,a.length-1);
for(int i = 0; i < n; i++)
{
System.out.print(a[i] + " ");
}
}
public static void quicksort(int a[],int p,int r) {
if(p<r)
{
int q=quick(a,p,r);
quick(a,q+1,r);
quick(a,p,q-1);
}
}
public static int quick(int[] a,int p,int r) {
int pivot=a[p];
int head=p+1;
int end=r;
while(head<=end) {
if(a[head]<=pivot)
head++;
else swap(a,head,end);
end–;
}
swap(a,p,end);
return end;
}
private static void swap(int[] a, int head, int end) {
// TODO Auto-generated method stub
int w;
w=a[head];
a[head]=a[end];
a[end]=w;
}
}