CountSort(计数排序)

#include<iostream>
using namespace std;

void SetArray_C( int* a, int* c, int n, int k)
{
    for( int i = 0; i < n; i++ )
    {
        c[ a[i] ]++;
    }
    for( int j = 1 ; j <= k; j++ )
    {
        c[j+1] = c[j]+c[j+1];
    }
}
void SetArray_B( int* a, int* b, int* c, int n )
{
    for( int i = n-1; i >= 0; i-- )
    {
        b[c[a[i]]-1] = a[i];
        c[a[i]]--;
    }
}
void OutPut( int* array, int n )
{
    for( int i = 0; i < n; i++ )
    {
        cout<<array[i]<<"  ";
    }
        
    cout<<endl;
}
int main()
{
    const int N = 5;
    const int Size = 4;
    int b[N];
    int a[N] = {4,1,3,3,4};
    int c[Size+1] = {0};
    SetArray_C(a, c, N, Size+1 );
    OutPut(a,N);
    OutPut(c,Size+1);
    SetArray_B(a, b, c, N );
    OutPut(b,N);
    return 0;
}

wKioL1UWbdXAJM0gAABKIK5UtBE262.jpg

你可能感兴趣的:(countsort)