|
|
|
@ -0,0 +1,62 @@
|
|
|
|
|
#include<stdio.h>
|
|
|
|
|
#include<string.h>
|
|
|
|
|
#define N 14 //<2F><><EFBFBD>鳤<EFBFBD><E9B3A4>
|
|
|
|
|
#define D 14 //<2F><><EFBFBD>λ<EFBFBD><CEBB>
|
|
|
|
|
|
|
|
|
|
int GetDigit(int M, int i) //ȡ<><C8A1><EFBFBD><EFBFBD>M<EFBFBD>ĵ<EFBFBD>iλ<69><CEBB>
|
|
|
|
|
{
|
|
|
|
|
while(i > 1)
|
|
|
|
|
{
|
|
|
|
|
M /= 10;
|
|
|
|
|
i--;
|
|
|
|
|
}
|
|
|
|
|
return M % 10;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void RadixSort(int num[], int len)
|
|
|
|
|
{
|
|
|
|
|
int i, j, k, l, digit;
|
|
|
|
|
int allot[10][N]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>顷
|
|
|
|
|
|
|
|
|
|
memset(allot, 0, sizeof(allot));//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>顷
|
|
|
|
|
|
|
|
|
|
for(i = 1; i <= D; i++)
|
|
|
|
|
{
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧλ<D3A6><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>롶<EFBFBD><EBA1B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>顷
|
|
|
|
|
for(j = 0; j < len; j++)
|
|
|
|
|
{
|
|
|
|
|
digit = GetDigit(num[j], i);
|
|
|
|
|
k = 0;
|
|
|
|
|
while(allot[digit][k])
|
|
|
|
|
k++;
|
|
|
|
|
allot[digit][k] = num[j];
|
|
|
|
|
}
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>顷<EFBFBD><E9A1B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><D5BC><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
l = 0;
|
|
|
|
|
for(j = 0; j < 10; j++)
|
|
|
|
|
{
|
|
|
|
|
k = 0;
|
|
|
|
|
while(allot[j][k] > 0)
|
|
|
|
|
{
|
|
|
|
|
num[l++] = allot[j][k];
|
|
|
|
|
k++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//ÿ<>η<EFBFBD><CEB7>䣬<EFBFBD>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>顷<EFBFBD><E9A1B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һλ<D2BB><CEBB><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD>
|
|
|
|
|
memset(allot, 0, sizeof(allot));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int main()
|
|
|
|
|
{
|
|
|
|
|
int num[N] = {22, 34, 3, 32, 82, 55, 89, 50, 37, 5, 64, 35, 9, 70};
|
|
|
|
|
|
|
|
|
|
RadixSort(num, N);
|
|
|
|
|
|
|
|
|
|
for(int i = 0; i < N; i++)
|
|
|
|
|
printf("%d ", num[i]);
|
|
|
|
|
printf("\n");
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|