计数排序

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]--;
			}
		}
		
	}
}
posted @   fighterk  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示