#include <iostream>
#include <math.h>
static int length;
void Counting_Sort( int *A, int *B, int k )
{
int *C;
C = new int[ k+1 ];
for( int i = 0; i <= k; ++i )
{
C[i] = 0;
}
for (int i = 0; i < length; ++i)
{
C[A[i]] = C[A[i]] + 1;
}
for( int i = 1; i < k+1; ++i )
{
C[i] = C[i] + C[i-1];
}
for( int i = length-1; i >= 0; --i )
{
B[C[A[i]]-1] = A[i]; //B[ 0 ~ length-1 ]
C[A[i]]--;
}
}
void print( int *A, int n )
{
for( int i = 0; i < n; i++ )
{
std::cout << A[i] << " ";
}
std::cout << std::endl;
}
int main( int argc, char* argv[] )
{
std::cout << " input the length of the array: ";
std::cin >> length;
int *A, *B, k = 0;
A = new int[length];
B = new int[length];
for( int i = 0; i < length; i++ )
{
std::cin >> A[i];
k = (k > A[i]) ? k : A[i];
}
std::cout << k << std::endl;
Counting_Sort( A, B, k );
print( B, length );
return 0;
}
计数排序 Counting Sort
最新推荐文章于 2024-08-10 17:55:54 发布