데이터 구조 루틴 - 간단 한 계수 정렬

본 고 는 [데이터 구조 기초 시리즈 (9): 정렬] 에서 9 교시 [간단 한 계수 정렬] 의 규칙 이다.
#include <stdio.h>
#include <malloc.h>
#define MaxSize 20
#define MaxNum 100
typedef int KeyType;    //       
typedef char InfoType[10];
typedef struct          //    
{
    KeyType key;        //    
    InfoType data;      //     ,   InfoType
} RecType;          //         

void CountSort(RecType R[],int n)
{
    int i, j, k;
    int C[MaxNum+1] = {0};  /*     C          0*/
    for(i=0; i<n; i++)
        C[R[i].key]++;    /*  ,R[i].key 6 ,C[6]++,C[R[i].key] R[i].key     */
    k=0;
    for(j=0; j<=MaxNum; j++)    /*     j*/
        for(i=1; i<=C[j]; i++)   /*j=R[j].key   C[j] ,        */
            R[k++].key=j;
}

int main()
{
    int i,n=10;
    RecType R[MaxSize];
    KeyType a[]= {6,1,12,6,18,1,18,7,0,6};
    for (i=0; i<n; i++)
        R[i].key=a[i];
    printf("   :");
    for (i=0; i<n; i++)
        printf("%d ",R[i].key);
    printf("
"
); CountSort(R,n); printf(" :"); for (i=0; i<n; i++) printf("%d ",R[i].key); printf("
"
); return 0; }

좋은 웹페이지 즐겨찾기