计数排序
Description 实现计数排序,通过多次遍历数组,统计比每一个元素小的其它元素个数,根据该统计量对数据进行排序。
Input 输入的每一行表示一个元素为正整数的数组,所有值用空格隔开,第一个值为数值长度,其余为数组元素值。
Output 输出的每一行为排序结果,用空格隔开,末尾不要空格。
Sample Input
13 24 3 56 34 3 78 12 29 49 84 51 9 100
Sample Output
3 3 9 12 24 29 34 49 51 56 78 84 100
import java.util.Scanner;
public class Main {
public static void bsort(int array[])
{
int counts[]=new int[array.length];
int newarray[]=new int[array.length];
for(int i=0;i<array.length-1;i++)
for(int j=i+1;j<array.length;j++)
if(array[i]>=array[j])
counts[i]++;//计算小于等于array[i]的个数 加不加等号不影响结果
else
counts[j]++;//计算小于array[j]的个数
for(int i=0;i<array.length;i++)
newarray[counts[i]]=array[i];//根据位置存放元素
for(int i=0;i<newarray.length;i++)//按照题意输出结果
if(i!=newarray.length-1)
System.out.print(newarray[i]+" ");
else
System.out.println(newarray[i]);
}
public static void main(String args[])
{
Scanner in=new Scanner(System.in);
String arr[]=in.nextLine().split(" ");//按照题意输入,注意第一个是元素个数
int array[]=new int[arr.length-1];//保存要排序的数据
for(int i=1;i<arr.length;i++)
array[i-1]=Integer.parseInt(arr[i]);//将数据转换
bsort(array);
}
}