Pagini recente » Diferente pentru utilizator/stargold2 intre reviziile 47 si 48 | Cod sursa (job #2247461) | Profil AndreiRS | Clasament cls_10c | Cod sursa (job #946056)
Cod sursa(job #946056)
program radix_sort;
var n,i:longint;
a,b:array[1..1000000] of longint;
c:array [0..99999] of longint;
bufin,bufout:array[1..100000] of byte;
begin
assign(input,'algsort.in');
reset(input);
settextbuf(input,bufin);
assign(output,'algsort.out');
rewrite(output);
settextbuf(output,bufout);
readln(n);
for i:=1 to n do read(a[i]);
for i:=1 to n do inc(c[a[i]mod 100000]);
for i:=1 to 99999 do c[i]:=c[i]+c[i-1];
for i:=n downto 1 do
begin
b[c[a[i]mod 100000]]:=a[i];
dec(c[a[i]mod 100000]);
end;
for i:=0 to 99999 do c[i]:=0;
for i:=1 to n do inc(c[b[i]div 100000]);
for i:=1 to 99999 do c[i]:=c[i]+c[i-1];
for i:=n downto 1 do
begin
a[c[b[i]div 100000]]:=b[i];
dec(c[b[i]div 100000]);
end;
for i:=1 to n do write(a[i],' ');
close(input);close(output);
end.