2_10计数排序

C++实现

class CountingSort {
public:
    int max,min;
    void min_max(int*A, int n, int &max, int &min){
        if(A[0]>A[1]){
            max = A[0];
            min = A[1];
        }else{
            min = A[0];
            max = A[1];
        }
        for(int i=2; i<n; i++){
            if(A[i] > max){
                max = A[i];
            }
            if(A[i] < min){
                min = A[i];
            }
        }
    }
    int* countingSort(int* A, int n) {
        // write code here
        if(n<=1){
            return A;
        }
        min_max(A, n, max, min);
        int len = max - min + 1;
        vector<int> range_vec(len, 0);
        for(int i=0; i<n; i++){
            range_vec[A[i] - min]++;
        }
        int p=0;
        for(int i=0; i<len; i++){
            for(int j=0; j<range_vec[i]; j++){
                A[p] = i + min;
                p++;
            }
        }
        return A;
    }
};

python 实现

# -*- coding:utf-8 -*-

class CountingSort:
    def countingSort(self, A, n):
        # write code here
        min_val = min(A)
        max_val = max(A)
        range_val = [[] for i in range(min_val, max_val+1)]
        for val in A:
            range_val[val - min_val].append(val)
        result = []
        for val in range_val:
            result.extend(val)
        return result
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • # Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列...
    aimaile阅读 26,725评论 6 427
  • 本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入...
    小小不懂11阅读 8,739评论 2 30
  • GitHub 上有一个 Awesome - XXX 系列的资源整理,资源非常丰富,涉及面非常广。awesome-p...
    若与阅读 19,008评论 4 418
  • 下了几天雨,今天终于出太阳了。带着养了十一年的老狗狗在家门前晒太阳,看着它微眯着眼睛很享受的样子觉得很美好 生活其...
    二庚阅读 1,864评论 0 1
  • 一直觉得朗读是一个比较酷炫的功能,之前一直不知道怎么做,目前有一些三方的语音朗读SDK,但他们都会收费,因此对于普...
    ChinaGoodStaff阅读 13,623评论 9 17

友情链接更多精彩内容