一,计数排序
#include <stdio.h>
void COUNTINGSORT(int *A, int *B, int array_size, int k)
{
int C[k+1], i, value, pos;
for(i=0; i<=k; i++)
{
C[i] = 0;
}
for(i=0; i< array_size; i++)
{
C[A[i]] ++;
}
for(i=1; i<=k; i++)
{
C[i] = C[i] + C[i-1];
}
for(i=array_size-1; i>=0; i--)
{
value = A[i];
pos = C[value];
B[pos-1] = value;
C[value]--;
}
}
int main()
{
int A[8] = {2, 5, 3, 0, 2, 3, 0, 3}, B[8], i;
COUNTINGSORT(A, B, 8, 5);
for (i=0; i<= 7; i++)
{
printf("%d ", B[i]);
}
printf("\n");
return 0;
}
适用范围:待排序的数最大值和最小值之差大小有限。