鸿 网 互 联 www.68idc.cn

当前位置 : 服务器租用 > 编程语言开发 > c语言 > >

计数排序

来源:互联网 作者:佚名 时间:2013-09-24 08:22
#includestdio.h void CountingSort(int *arrA,int *arrB,int k,int length) { int c[k+1]; memset(c,0,sizeof(c)); int i=1; for(;i=length;i++) { c[arrA[i]]=c[arrA[i]]+1; } i=1; for(;i=k;i++) { c[i]=c[i-1]+c[i]; } i=length; for(;i=1;i--) { arrB[c

#include<stdio.h>
void CountingSort(int *arrA,int *arrB,int k,int length)
{
     int c[k+1];
     memset(c,0,sizeof(c));
     int i=1;
     for(;i<=length;i++)
     {
         c[arrA[i]]=c[arrA[i]]+1;
     }
     
     i=1;
     for(;i<=k;i++)
     {
         c[i]=c[i-1]+c[i];
     }
     
     i=length;
     for(;i>=1;i--)
     {
         arrB[c[arrA[i]]]=arrA[i];
         c[arrA[i]]=c[arrA[i]]-1;
     }
}

int main()
{
    int arrA[]={0,12,44,0,2,3,24,5,23,56,32,45,5,5,0,45,64};
    int length=sizeof(arrA)/sizeof(arrA[0])-1;
    int max=arrA[1];
    int i=1;
    for(;i<=length;i++)
    {
        if(arrA[i]>max)
        max=arrA[i];
    }
    
    int k=max;
    
    int arrB[length+1];
    CountingSort(arrA,arrB,k,length);
    
    i=1;
    for(;i<=length;i++)
    printf("%d ",arrB[i]);
    system("pause");
    return 0;
}

网友评论
<