问题描述
给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200
输入格式
第一行为一个整数n。
第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。
第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。
输出格式
输出一行,按从小到大的顺序输出排序后的数列。
样例输入
5
8 3 6 4 9
8 3 6 4 9
样例输出
3 4 6 8 9
下面给出两种常用的排列方法:
1、选择排序法
import java.util.*;
public class SerieSort_13{
public static void main(String[] agrs)
{
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int arr[] = new int[n];
for(int i=0; i<arr.length; i++)
{
arr[i] = sc.nextInt(); //存储数据
}
sc.close();
sort(arr);
for(int i=0; i<arr.length; i++)
{
System.out.print(arr[i]+" ");
}
}
public static void sort(int arr[])
{
for(int i=1; i<arr.length; i++) <span style="white-space:pre"> </span>//比较次数
{
int insertVal = arr[i]; //先取出第二个数(下标从0开始)
int index = i-1;
while(index>=0 && insertVal < arr[index]) //每一个数和前面的数两两比较
{
arr[index+1] = arr[index];
index--;
}
arr[index+1] = insertVal;
}
}
2、冒泡排序法
import java.util.*;
public class SerieSort{
public static void main(String[] agrs)
{
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int arr[] = new int[n];
for(int i=0; i<arr.length; i++)
{
arr[i] = sc.nextInt();
}
sc.close();
sort(arr);
for(int i=0; i<arr.length; i++)
{
System.out.print(arr[i]+" ");
}
}
public static void sort(int arr[])
{
int temp = 0;
for(int i=0; i<arr.length-1; i++) //比较次数
{
for(int j=0; j<arr.length-1-i; j++) //每次比较都把最大的数放到最后面
{
if(arr[j] > arr[j+1])
{
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}