java_day1
目标:Java web开发
给定你一个有约十万个数的整数数列,每个整数绝对值小于20亿。
请你在1秒内对这个数列按照从小到大进行排序,并将排好序的数列按顺序输出。
输入样例(5个数时):
5
3 1 2 4 5
输出样例:
1 2 3 4 5
/*
今天,是使用Java解决问题的开始。
我学会了简单的import导入,简单的输入输出,简单的函数编译,见识到Java强大的封装特性
*/
import java.util.*;//这里导入java.util家族,因为Scanner属于util家族
public class Main{//java是完全面向对象的语言
public static void main(String[] args){//main函数后面的参数,在dos窗口输入
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();
q_sort(a,0,n-1);
/*快速排序可以用冒泡排序代替,但解决这个问题需要运行10分钟
for(int i=n-1;i>0;i--)
for(int j=0;j<i;j++)
if(a[j+1]<a[j]){
a[j]^=a[j+1];
a[j+1]^=a[j];
a[j]^=a[j+1];
}
*/
//还可以用util包下的排序函数来实现,比q_sort()快:Arrays.sort(a,0,n);
for(int i=0;i<n;i++) System.out.print(a[i]+" ");
}
public static void q_sort(int[] a,int l,int r){
if(l==r) return;
int mid=a[l+r>>1],i=l-1,j=r+1;
while(i<j){
while(a[++i]<mid);
while(a[--j]>mid);
if(i<j){
a[i]^=a[j];
a[j]^=a[i];
a[i]^=a[j];
}
}
q_sort(a,l,j);
q_sort(a,j+1,r);
}
}

浙公网安备 33010602011771号