Update 基数排序.cpp

master
pmkfqw2gu 4 years ago
parent 9236545a7f
commit 33a0540971

@ -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><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><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;
}

Loading…
Cancel
Save