计数排序

前言

原理后续补齐。

代码

public static int[] countSort(int[] array)
{
	// 取得计数排序范围
	int max = array[0];
	int min = array[0];
	for (int i = 1; i < array.Length; i++)
	{
		if (array[i] > max)
		{
			max = array[i];
		}

		if (array[i] > min)
		{
			min = array[i];
		}
	}
	int d = max - min;
	// 将数组填充
	int[] countArray = new int[d+1];
	for (int i=0; i < array.Length; i++)
	{
		// 如果有某个数就加1
		countArray[array[i]-min]++;
	}
	// 统计数组,每个是前面数组之和
	for (int i=1;i<countArray.Length;i++)
	{
		countArray[i] += countArray[i - 1];
	}
	//开始排序
	int[] sortedArray = new int[array.Length];
	for (int i=array.Length-1;i>=0;i--)
	{
		sortedArray[countArray[array[i] - min]-1]=array[i];
		countArray[array[i] - min]--;
	}
	return sortedArray;
}
posted @ 2020-02-08 22:24  敖毛毛  阅读(155)  评论(0编辑  收藏  举报