南大高级算法-计数排序

计数排序
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);


    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值