Методы сортировки

Быстрая сортировка:

var a:array[1..10000] of longint;
i,n:longint;
procedure qsort(l,r:longint);
var k,i,j,y:longint;
begin
i:=l;
j:=r;
k:=a[(l+r) div 2];
{repeat }
while a[i]<k do inc(I);
while a[j]>k do dec(j);
if i<=j then
begin
y:=a[i]; a[i]:=a[j]; a[j]:=y;
inc(i); dec(j);
end;
if l<j then qsort(l,j);
if i<r then qsort(i,r);
end;

begin
read(n);
for i:=1 to n do
read(a[i]);
qsort(1,n);
for i:=1 to n do
write(a[i],' ');
end.

 

Цифровая сортировка:

program Radix_sort;
uses crt;
var a,start:array[1..1000] of integer;
n,i:integer;
k:longint;

procedure RS;
var count:array[0..9] of integer;
j:integer;
begin
for j:=0 to 9 do
count[j]:=0;
for j:=1 to n do
count[(a[j] mod (k*10)) div k]:= count[(a[j] mod (k*10)) div k]+1;
for j:=1 to 9 do
count[j]:=count[j-1]+count[j];
for j:=n downto 1 do
begin
start[count[(a[j] mod (k*10)) div k]]:=a[j];
count[(a[j] mod (k*10)) div k] := count[(a[j] mod (k*10)) div k]-1;
end;
end;

begin
clrscr;
writeln('kolichestvo elementov massiva:');
readln(n);
writeln('Vvedite massiv:');
for i:=1 to n do read(a[i]);
k:=1;
for i:=1 to 5 do
begin
RS;
a:=start;
k:=k*10;
end;
writeln('Otsortirovanniy massiv: ');
for i:=1 to n do write(a[i],' ');
readln;
readln;
end.

 

 

 


На Главную

Hosted by uCoz