欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

计数排序

程序员文章站 2022-03-24 13:49:16
...
package busishentu;

import java.util.Arrays;

public class JiShuSort {
	public static void main(String[] args) {
		int[] arr={2,4,5,6,7,81,5,3};
		int[] crr=JiShuSort(arr);
		System.out.println(Arrays.toString(crr));
	}
	public static int[] JiShuSort(int[] arr){
		int max=arr[0];
		int min=arr[0];
		for(int n:arr){
			//如果数组arr小于
			if(n<min){
				min=n;
			}
			if(n>max){
				max=n;
			}
		}
		int[] brr=new int[max-min+1];
		//循环遍历   旧数组进行计数排序
		for(int n:arr){
			brr[n-min]+=1;
		}
		//创建最终数组
		int[] crr=new int[arr.length];
		//记录最终数组的下标
		int index=0;
		//先循环每一个元素 技术排序器的下标中
		//里层循环出现的次数
		for(int i=0;i<brr.length;i++){
			for(int j=0;j<brr[i];j++){
				crr[index++]=i+min;
			}
		}
		return crr;
		
	}
	
	/*public int[] sort(int[] arr) {
		int max=arr[0];
		for(int i=0;i<arr.length;i++) {
			if(max<arr[i])
				max=arr[i];
		}
		int c[]=new int[max+1];
		int b[]=new int[arr.length];
		for(int i=0;i<arr.length;i++) {
			c[arr[i]]+=1;
		}
		System.out.println(Arrays.toString(arr));
		for(int i=1;i<c.length;i++) {
			c[i]+=c[i-1];
		}
		System.out.println(Arrays.toString(c));
		for(int i=arr.length-1;i>=0;i--) {
			b[c[arr[i]]-1]=arr[i];
			c[arr[i]]-=1;
		}
		System.out.println(Arrays.toString(c));
		return b;
	}
	public static void main(String[] args) {
		int arr[] = { 4, 1, 6, 5, 3, 7, 2, 9, 1};
		
		System.out.println(Arrays.toString((arr)));
	}*/
	
}

 

上一篇: CountSort

下一篇: 计数排序