前言
This Series aritcles are all based on the book 《经典算法大全》; 对于该书的所有案例进行一个探究和拓展,并且用python和C++进行实现; 目的是熟悉常用算法过程中的技巧和逻辑拓展。
提出问题
41.Algorithm Gossip: 基数排序法
分析和解释
代码
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int data[10] = {73, 22, 93, 43, 55, 14, 28, 65, 39, 81};
int temp[10][10] = {0};
int order[10] = {0};
int i, j, k, n, lsd;
k = 0;
n = 1;
printf("
排序前: ");
for(i = 0; i < 10; i++)
printf("%d ", data[i]);
putchar('
');
while(n <= 10) {
for(i = 0; i < 10; i++) {
lsd = ((data[i] / n) % 10);
temp[lsd][order[lsd]] = data[i];
order[lsd]++;
}
printf("
重新排列: ");
for(i = 0; i < 10; i++) {
if(order[i] != 0)
for(j = 0; j < order[i]; j++) {
data[k] = temp[i][j];
printf("%d ", data[k]);
k++;
}
order[i] = 0;
}
n *= 10;
k = 0;
}
putchar('
');
printf("
排序后: ");
for(i = 0; i < 10; i++)
printf("%d ", data[i]);
return 0;
}
拓展和关联
** 排序算法是基础算法的核心, 思想也比较多, 容易被融合; 可以[维基百科] 进行深入了解.**
后记
参考书籍
- 《经典算法大全》
- 维基百科