其他分享
首页 > 其他分享> > 计数排序

计数排序

作者:互联网

package demo;

import java.util.Arrays;

public class P49 {
//计数排序
//思路为用辅助空间下标对应元素值,下标放的值对应元素出现次数。然后遍历辅助空间,就能有序填回原来数组。
//适用于数据密集并且峰值较小的数组,否则会浪费很多空间
public static void main(String[] args) {
int[] arr= {10,3,15,7,20};
countSort(arr);
System.out.println(Arrays.toString(arr));
}

static void countSort(int[] arr) {
	int maxValue=arr[0];
	for(int i=1;i<arr.length;i++) {
		if(arr[i]>maxValue) {
			maxValue=arr[i];
		}
	}
	
	int[] help=new int[maxValue+1];
	for(int i=0;i<arr.length;i++) {		//对出现次数进行计数
		help[arr[i]]++;
	}
	
	int arrIndex=0;
	for(int i=0;i<help.length;i++) {
		while(help[i]>0) {
			arr[arrIndex++]=i;
			help[i]--;
		}
	}
	
}

}

标签:arr,Arrays,help,int,maxValue,计数,static,排序
来源: https://www.cnblogs.com/fighterk/p/16216631.html