Pagini recente » Cod sursa (job #490853) | Cod sursa (job #1184770) | Cod sursa (job #893045) | Cod sursa (job #536624) | Cod sursa (job #308931)
Cod sursa(job #308931)
// Arhiva educationala - Sortare prin comparare
// Implementare LSD Radix Sort pe 2 biti
// Timp constant n*64
var
n, i, key,k, n2 : longint;
v1, v2 : array[1..500000] of longint;
f : text;
begin
assign (f, 'algsort.in');
reset (f);
readln (f, n);
for i := 1 to n do read (f,v1[i]);
close (f);
for k := 0 to 15 do
if (k mod 2 = 0) then
begin
n2 := 0;
for key := 0 to 3 do
for i := 1 to n do
if (((v1[i] shr (k shl 1)) and 3) = key) then
begin
inc(n2);
v2[n2]:=v1[i];
end;
end
else
begin
n2 := 0;
for key := 0 to 3 do
for i := 1 to n do
if (((v2[i] shr (k shl 1)) and 3) = key) then
begin
inc(n2);
v1[n2]:=v2[i];
end;
end;
assign (f,'algsort.out');
rewrite (f);
for i:=1 to n do write (f,v1[i],' ');
close (f);
end.