首页 > 编程语言 > 详细

计数排序

时间:2020-02-08 22:48:01      阅读:87      评论:0      收藏:0      [点我收藏+]

前言

原理后续补齐。

代码

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;
}

计数排序

原文:https://www.cnblogs.com/aoximin/p/12285445.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!