计数排序

前言

原理后续补齐。

代码

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=0;i--)
    {
        sortedArray[countArray[array[i] - min]-1]=array[i];
        countArray[array[i] - min]--;
    }
    return sortedArray;
}

你可能感兴趣的:(计数排序)