基数排序思想及分析:
void Radix_sort(int a[], int size )
{
int *count = new int[10];
int *bucket = new int[size];
int radix = 1;
for (int i = 1; i<=get_bit(a,10); i++)
{
memset(count, 0, sizeof(int )* 10);
memset(bucket, 0, sizeof(int )*size);
for (int j = 0; j < size; j++)
{
count[ a[j] / radix % 10]++;
}
bucket[0] = 0;
for (int i = 1; i < size; i++)
{
bucket[i] = bucket[i - 1] + count[i - 1];
}
int *temp = new int[size];
for (int i = 0; i < size; i++)
{
int index = a [i] / radix % 10;
temp[bucket[index]] = a[i];
bucket[index]++;
}
for (int i = 0; i < size; i++)
{
a[i] = temp[i];
}
radix *= 10;
delete[]temp;
}
}