计数排序
作者:互联网
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