|
|
|
@ -1,9 +1,9 @@
|
|
|
|
|
#include<stdio.h>
|
|
|
|
|
#include<string.h>
|
|
|
|
|
#define N 14 //<EFBFBD><EFBFBD><EFBFBD>鳤<EFBFBD><EFBFBD>
|
|
|
|
|
#define D 14 //<EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>
|
|
|
|
|
#define N 14 //数组长度
|
|
|
|
|
#define D 14 //最大位数
|
|
|
|
|
|
|
|
|
|
int GetDigit(int M, int i) //ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>ĵ<EFBFBD>iλ<EFBFBD><EFBFBD>
|
|
|
|
|
int GetDigit(int M, int i) //取整数M的第i位数
|
|
|
|
|
{
|
|
|
|
|
while(i > 1)
|
|
|
|
|
{
|
|
|
|
@ -16,13 +16,13 @@ int GetDigit(int M, int i) //ȡ<><C8A1><EFBFBD><EFBFBD>M<EFBFBD>ĵ<EFBFBD>iλ<69><CEBB>
|
|
|
|
|
void RadixSort(int num[], int len)
|
|
|
|
|
{
|
|
|
|
|
int i, j, k, l, digit;
|
|
|
|
|
int allot[10][N]; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>顷
|
|
|
|
|
int allot[10][N]; //《分配数组》
|
|
|
|
|
|
|
|
|
|
memset(allot, 0, sizeof(allot));//<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>顷
|
|
|
|
|
memset(allot, 0, sizeof(allot));//初始化《分配数组》
|
|
|
|
|
|
|
|
|
|
for(i = 1; i <= D; i++)
|
|
|
|
|
{
|
|
|
|
|
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧλ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>롶<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>顷
|
|
|
|
|
//分配相应位数的数据,并存入《分配数组》
|
|
|
|
|
for(j = 0; j < len; j++)
|
|
|
|
|
{
|
|
|
|
|
digit = GetDigit(num[j], i);
|
|
|
|
@ -31,7 +31,7 @@ void RadixSort(int num[], int len)
|
|
|
|
|
k++;
|
|
|
|
|
allot[digit][k] = num[j];
|
|
|
|
|
}
|
|
|
|
|
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>顷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
//将《分配数组》的数据依次收集到原数组中
|
|
|
|
|
l = 0;
|
|
|
|
|
for(j = 0; j < 10; j++)
|
|
|
|
|
{
|
|
|
|
@ -42,7 +42,7 @@ void RadixSort(int num[], int len)
|
|
|
|
|
k++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//ÿ<EFBFBD>η<EFBFBD><EFBFBD>䣬<EFBFBD>ռ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>顷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һλ<EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD>
|
|
|
|
|
//每次分配,收集后初始化《分配数组》,用于下一位数的分配和收集
|
|
|
|
|
memset(allot, 0, sizeof(allot));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -58,5 +58,3 @@ int main()
|
|
|
|
|
printf("\n");
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|