您的位置:首页 > 其它

【刷题之路】计数排序

2016-05-30 21:36 274 查看
经典算法

class CountingSort {

public:

    int* countingSort(int* A, int n) {

        // write code here

        int max=A[0],min=A[0],i,j=0,diff;

        for(i=0;i<n;i++){ //寻找最大与最小值,确定数组大小

            if(max<A[i]) max=A[i];

            if(min>A[i]) min=A[i];

        }

        diff=max-min+1;

        vector<int> temp(diff,0); //根据diff确定数组大小

        for(i=0;i<n;i++){

            temp[A[i]-min]++; //遇到某一个数,减去min即可从零开始,计数

        }

        for(i=0;i<diff;i++){

            while(temp[i]>0){

                A[j++]=min+i;  //遍历A,根据计数重新生成数组

                temp[i]--;

            }

        }

        return A;

        

    }

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  刷题 算法 计数排序