http://virtual-object.narod.ru
 
    Virtual Object :: Programs :: Поразрядная сортировка
  Download
 
Наша кнопка
Поразрядная сортировка
{$APPTYPE CONSOLE}

uses SysUtils;

var a,dest:array [0..10000] of longint;
count:array [0..10] of longint;
k,n,i:longint;
⁄⁄-------------------------------------------
function get_digit(x,y:longint):longint;
var temp,i:longint;
begin
temp:=0;
for i:=1 to y do
 begin
  temp:=x mod 10;
  x:=x div 10;
 end;
get_digit:=temp;
end;
⁄⁄-------------------------------------------
procedure radixsort(first:boolean; x:longint);
var i,j,t,temp:longint;
begin
fillchar(count,sizeof(count),0);
for i:=1 to n do
if first then inc(count[get_digit(a[i],x)])
else inc(count[get_digit(dest[i],x)]);
t:=1;
for j:=0 to 9 do
 begin
  temp:=count[j];
  count[j]:=t;
  t:=t+temp;
 end;
for i:=1 to n do
if first then
 begin
  dest[count[get_digit(a[i],x)]]:=a[i];
  inc(count[get_digit(a[i],x)]);
 end else
 begin
  a[count[get_digit(dest[i],x)]]:=dest[i];
  inc(count[get_digit(dest[i],x)]);
 end;
if x<k then radixsort(not first,x+1);
end;
⁄⁄-------------------------------------------
begin
assign(input,′input.txt′); reset(input);
assign(output,′output.txt′); rewrite(output);
readln(n);
k:=0;
for i:=1 to n do
 begin
  readln(a[i]);
  if k<length(IntToStr(a[i])) then k:=length(IntToStr(a[i]));
 end;
radixsort(true,1);
for i:=1 to n do
if odd(k) then writeln(dest[i]) else writeln(a[i]);
end.
  JavaScript
  Animation
  Links
 
  Mail
 
 
 

Object © 2004 - 2005. All rights reserved.

 
Сайт создан в системе uCoz