问题描述:
给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200
输入格式:
第一行为一个整数n。
第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。
输出格式:
输出一行,按从小到大的顺序输出排序后的数列。
样例输入:
5
8 3 6 4 9
样例输出:
3 4 6 8 9
实现代码:
import java.util.*;
class Main {
public static void main(String []args) {
//输入数据的准备工作
Scanner input=new Scanner(System.in);
int geshu=input.nextInt();
int arr[]= new int[geshu];//创建动态数组
int exchange=0;
for(int i=0;i<geshu;i++)
arr[i]=input.nextInt();
//采用冒泡排序法进行排序
//思路是,比较相邻的元素,如果第一个比第二个大,就交换它们两个。第一轮交换完后,最后的元素会是最大的数,以此类推。
for(int k=0;k<geshu-1;k++)//确定有多少轮比较,比其少一轮,则刚好比较完,因为最后一个数不需要和其本身比较
for(int j=0;j<geshu-k-1;j++) {//每比较完一轮,则少一个数需要比较,因为前一次比较已经排序好了一个数
if(arr[j]>arr[j+1]) {//发现前一个数比后一个数大,则两两交换顺序
exchange=arr[j+1];
arr[j+1]=arr[j];
arr[j]=exchange;
}
}
for(int i=0;i<geshu;i++)
System.out.print(arr[i]+" ");
}
}