Vanilla 1.1.5a jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.
Od 1 do 5 z 5
program sort;
type
obiekt = record
klucz : integer;
end;
type indeks = 0..N;
const N=20;
Sortowanie przez wstawienie
Procedura ma wyglądac nastepująco:
procedure wstawienie;
var i,j : indeks; x : obiekt;
begin
for i=2 to n do
begin
x:=a; a[0]=x; j=i-1;
while x.klucz<a[j].klucz do
begin
a[j+1]:=a[j]; j=j-1
end
a[j+1]:=x
end
end.
Sortowanie metodą Schella
Wartość początkowego przsunięcia
h:=1;
repeat
h:= 3 * h + 1;
until h>=n
h:= (h div 9);
h:= (h div 3);
h - przyrosty
n - liczba elementów
Procedura sortowania metodą Shella miałaby wyglądać nastepująco:
for m:=1 to t do
begin
k:-h[m]; s:=-k;
for i:=k+1 to n do
begin
x:=a; j:=i-k;
if s=0 then s:=-k;
s:=s+1;
a{s}:=x (tu ma być oczywiście nawias kwadratowy)
while x.klucz<a[j].klucz do
begin
a[j+1]:=a[j]; j:-j-k
end;
a[j+1]:=x
end;
end;
end.
Tak miałyby wyglądać te programy. Najważniejsze aby był użyty tryb recordowy i były sortowanie obiekty.
Losowanie liczba mozna zrealizowac np w ten sposób
randomize;
for i:=1 to N do a:=random(100);
writeln('Przed sortowaniem:' );
for i:=1 to N do write (a[i]);
writeln;
Prosiłbym o zrobienie tych pięciu programów sortujących.
Myśle że ktoś podoła wyzwaniu (może dla niektórych to bułka z masłem).
Z góry Wielkie Dzięki
Uses Crt;
Type TObiekt = record
Klucz : Integer;
end;
procedure Wstawianie(var Tablica : array of TObiekt;Pierwszy,Ostatni : Integer);
var i,j,x : Integer;
begin
for j:=Ostatni downto Pierwszy do
begin
x:=Tablica[j].Klucz;
i:=j+1;
while (i<=Ostatni) and (x>Tablica[ i].Klucz) do
begin
Tablica [ i-1] :=Tablica[ i];
Inc( i)
end;
Tablica [ i-1].Klucz:=x
end
end;
procedure QuickSort(var Tablica : array of TObiekt;Pierwszy,Ostatni : Integer);
var Srodek,b,i,j : Integer;
begin
if Pierwszy<Ostatni then
begin
Srodek:=Tablica[Random(Ostatni-Pierwszy)+Pierwszy+1].Klucz;
i:= Pierwszy-1;
j:= Ostatni+1;
repeat
repeat i:=i+1 until Srodek<=Tablica [ i].Klucz;
repeat j:=j-1 until Srodek>=Tablica[j].Klucz;
b:=Tablica [ i].Klucz;
Tablica [ i].Klucz:=Tablica[j].Klucz;
Tablica [j].Klucz:=b
until i>=j;
Tablica[j].Klucz:=Tablica [ i].Klucz;
Tablica [ i].Klucz:=b;
QuickSort(Tablica,Pierwszy,i-1);
QuickSort(Tablica,i,Ostatni)
end
end;
Const Ostatni = 20;
Var Tablica : array [0..Ostatni] of TObiekt;
Wybor,i : Integer;
Begin
Randomize;
ClrScr;
Writeln('Wybierz metode sortowania:');
Writeln('1. Sortowanie - przez wstawianie');
Writeln('2. ');
Writeln('3. Sortowanie - Szybkie');
Writeln('4. ');
Writeln('5. ');
Writeln;
for i:=0 to Ostatni do
begin
Tablica [ i].Klucz:=Random(100);
Write(Tablica [ i].Klucz,',')
end;
Writeln;
Readln(Wybor);
case Wybor of
1 : Wstawianie(Tablica,0,Ostatni);
2 : ;
3 : QuickSort(Tablica,0,Ostatni);
4 : ;
5 :
end;
for i:=0 to Ostatni do Write(Tablica [ i].Klucz,',');
ReadKey
end.
Od 1 do 5 z 5