C#算法之计数排序

        算法释义:计数排序是一种非基于比较的排序算法,它不依赖于比较操作来确定元素的顺序,而是通过键值索引直接确定元素的输出位置。计数排序适用于一定范围内的整数排序。为什么说是一定范围之内呢?原因如下:计数排序的复杂度为Ο(n+k)(其中k是整数的范围),这是一种牺牲空间换取时间的做法,而且当O(k)>O(n*log(n))的时候其效率反而不如基于比较的排序。

        这个算法不太常用,基本的示例代码如下:

    public static void Main()
    {
        int[] array = { 3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5 };
        int[] sortedArray = Countsort(array);
    }


    public static int[] Countsort(int[] arr)
    {
        int min = arr.Min();
        int max = arr.Max();
        int range = max - min + 1;
 
        int[] count = new int[range];
        int[] sorted = new int[arr.Length];
 
        foreach (int i in arr)
        {
            count[i - min]++;
        }
 
        for (int i = 1; i < count.Length; i++)
        {
            count[i] += count[i - 1];
        }
 
        for (int i = arr.Length - 1; i >= 0; i--)
        {
            sorted[count[arr[i] - min] - 1] = arr[i];
            count[arr[i] - min]--;
        }
 
        return sorted;
    }

相关推荐

  1. C#算法计数排序

    2024-05-14 11:36:03       12 阅读
  2. 前端算法堆 -- 计数排序

    2024-05-14 11:36:03       37 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-14 11:36:03       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-14 11:36:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-14 11:36:03       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-14 11:36:03       20 阅读

热门阅读

  1. aws s3

    aws s3

    2024-05-14 11:36:03      9 阅读
  2. python 基础(笔记)

    2024-05-14 11:36:03       15 阅读
  3. Python3 笔记:分支结构

    2024-05-14 11:36:03       14 阅读
  4. spring基于XML的声明式事务控制

    2024-05-14 11:36:03       12 阅读
  5. catti三笔真题解读-英译汉(2012上)①

    2024-05-14 11:36:03       9 阅读
  6. 使用Django构建高效的Web应用

    2024-05-14 11:36:03       10 阅读