• Giải thuật
- d là chiều dài của một con số lớn nhất trong dãy số được cho
- sử dụng 10 giỏ theo theo cơ chế stack
- khởi gán 10 stack.
- d là chiều dài của một con số lớn nhất trong dãy số được cho
- sử dụng 10 giỏ theo theo cơ chế stack
- khởi gán 10 stack.
/*Tìm số lớn nhất trong dãy*/
int somax(int *a, int n)
{
int i,max=0,dem=0;
for(i=1;i<=n;i++)
if(a[i]>max) max=a[i];
while(max!=0)
{
dem++;
max=max/10;
}
return dem;
}
void pushS(int x,stack *&S)
{
stack *p;
p=new stack;
p->info=x;
p->next=NULL;
p->next=S;
S=p;
}
void popS(int &x,stack *&S)
{
stack *p;
p=S;
S=S->next;
x=p->info;
delete(p);
}
void Radixsort(int *a,int &n)
{
stack *s[10];
int i,j,k,d,mu;
mu=1;
d=somax(a,n);
for(i=0;i<d;i++)
{
for(j=0;j<=9;j++)
s[j]=NULL;
for(k=n;k>=1;k--)
pushS(a[k],s[a[k]/mu%10)]);
mu=mu*10;
n=0;
for(j=0;j<=9;j++)
{
while(s[j]!=NULL)
{
n=n+1;
popS(a[n],s[h]);
}
}
}
}
[center][left]