码迷,mamicode.com
首页 > 其他好文 > 详细

counting sort 计数排序

时间:2014-06-12 23:08:11      阅读:237      评论:0      收藏:0      [点我收藏+]

标签:style   class   blog   code   java   http   

bubuko.com,布布扣
//counting sort 计数排序
//参考算法导论8.2节
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cassert>
using namespace std;
const int k=5;
const int n=7;
int a[n]={5, 5, 1, 2 , 5, 4, 1};
int b[n];
int c[k+1];

int main()
{
    int maxn=0;
    memset(c, 0, sizeof c);
    for(int i=0;i<n;i++)
    {
        c[a[i]]++;  
        maxn=max(maxn, a[i]);
    }
    assert(maxn<=k);

    //统计<=i的个数, c[i]就是最终i要放置的位置
    for(int i=1;i<=maxn;i++)
    {
        c[i]+=c[i-1];
    }
    for(int i=0;i<=maxn;i++)
        printf("%d ", c[i]);
    printf("\n");

    for(int i=n-1;i>=0;i--)
    {
        b[c[a[i]] - 1]=a[i];//从0开始
        --c[a[i]];
    }

    for(int i=0;i<n;i++)
        printf("%d ", b[i]);
    printf("\n");
    return 0;
}
bubuko.com,布布扣

counting sort 计数排序,布布扣,bubuko.com

counting sort 计数排序

标签:style   class   blog   code   java   http   

原文地址:http://www.cnblogs.com/cute/p/3781382.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!