题目:输入n个数,按大小顺序输出。
package hello;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
**//获取输入的一串数字转化成字符并打印输出**
Scanner s=new Scanner(System.in);
String str=s.nextLine();
String []s2=str.split(",");
int []a=new int[s2.length];
for(int i=0;i<s2.length;i++) {
a[i]=Integer.parseInt(s2[i]);
}
for(int i=0;i<a.length;i++) {
System.out.printf(" %d",a[i]);
}System.out.printf("\n");
**// 构造quicksort排序**
Quicksort sort=new Quicksort(a,0,a.length);
// int []c=new int[a.length];c=a;
for(int i=0;i<a.length;i++) {
System.out.printf(" %d",a[i]);
}
}
}
class Quicksort{
Quicksort(){};
Quicksort(int a[],int p,int r){
if(p<r) {
int q=partition(a,p,r);
quicksort(a,p,q);
quicksort(a,q+1,r);
}
}
public void quicksort(int[] a, int p, int r) {
// TODO Auto-generated method stub
if(p<r) {
int q=partition(a,p,r);
quicksort(a,p,q);
quicksort(a,q+1,r);
}
}
public int partition(int a[],int p,int r) {
int i=p;
int j=p;
int k=p;
int x=a[i];
int point=0;
int b[] =new int [a.length];**//引入等长数组,转换时使用**
for(i=p;i<r;i++) {
if(a[i]<=x) {
a[j]=a[i];
j++;
}
if(a[i]>x) {
b[k]=a[i];
k++;
}**//b数组存放大于a[p]的数**
}
**//交换第一个数和中值的数,并记录比较点**
k=p;point=j-1;
int temp=a[point];
a[point]=a[p];a[p]=temp;
**//把大于a[p]的数接回a数列;**
for(j=point+1;j<r;j++) {
a[j]=b[k];
k++;
}
return point;
}
}
结果: