本文主要是介绍[C语言]基数排序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
#include<stdio.h>
void radixSort(int *a,int size)
{
int temp[10][20]={0}; //第一个10表示0~9,第二个20表示a的size
int order[10]={0};
int i,j,k; //k表示当前比较的那一位上的具体数字
int n; //n=1,10,100,1000...取决于a中的最大的数
int p;
n=1;
while(n <= 100)
{
for(i=0;i<size;i++)
{
k = (a[i]/n) % 10;
temp[k][order[k]] = a[i];
order[k]++;
}
p=0; //p为一次排序过程中,a的脚标
for(i=0;i<10;i++)
{
if(order[i] != 0)
{
for(j=0;j<order[i];j++)
{
a[p] = temp[i][j];
p++;
}
order[i] = 0;
}
}
n *= 10;
}
}
void main()
{
int a[20]={3,22,93,3,5,14,28,65,39,81,71,72,48,39,55,105,129,184,196,208};
int i;
radixSort(a,20);
for(i=0;i<20;i++)
printf("%d ",a[i]);
}
这篇关于[C语言]基数排序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!