Update 基数排序.cpp

master
pmkfqw2gu 4 years ago
parent 9236545a7f
commit 33a0540971

@ -1,9 +1,9 @@
#include<stdio.h> #include<stdio.h>
#include<string.h> #include<string.h>
#define N 14 //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #define N 14 //数组长度
#define D 14 //<EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD> #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) 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) void RadixSort(int num[], int len)
{ {
int i, j, k, l, digit; 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++) 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++) for(j = 0; j < len; j++)
{ {
digit = GetDigit(num[j], i); digit = GetDigit(num[j], i);
@ -31,7 +31,7 @@ void RadixSort(int num[], int len)
k++; k++;
allot[digit][k] = num[j]; 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; l = 0;
for(j = 0; j < 10; j++) for(j = 0; j < 10; j++)
{ {
@ -42,7 +42,7 @@ void RadixSort(int num[], int len)
k++; 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)); memset(allot, 0, sizeof(allot));
} }
} }
@ -58,5 +58,3 @@ int main()
printf("\n"); printf("\n");
return 0; return 0;
} }

Loading…
Cancel
Save