JAVA语言之计数排序

来源:互联网 发布:淘宝宝贝背景图片素材 编辑:程序博客网 时间:2024/04/28 10:29

非比较的计数排序可以用桶排序的方式实现

代码如下:

package com.paixu;public class jishu {public static void main(String[] args) {int[] A=new int[]{1,2,3,5,2,3};A=jishu.countingSort(A, 6);for(int i=0;i<A.length;i++){System.out.print(A[i]+" ");}}public static int[] countingSort(int[] A, int n) {       int min=A[0];       int max=A[0];       //得到数组中的最大值和最小值       for(int a:A){      min =Math.min(a, min);      max =Math.max(a, max);       }//然后创建一个刚好的数量的桶       int tongNum=max-min+1;       int[] tong =new int[tongNum];       //然后将A中对应的数放进该桶       for(int a:A){      tong[a-min]++;       }//用遍历的每一个数减去最小的数就能保存       int count=0;       //现在将数组桶里面的数据一次倒出       for(int i=0;i<tongNum;i++){      //第一个for含义是指一共有多少个这样的桶      for(int j=0;j<tong[i];j++){      //第二个for含义是指遍历到的每一个桶里面有多少个同样的数据      //并且从0开始都小于这个数目tong[i]      A[count]=i+min;      //这个表达式i+min表示从最小值+0开始算起      count++;      }       } return A;    }}


0 0