Recursieve sorteerprocedure

Status
Niet open voor verdere reacties.

adjes26

Gebruiker
Lid geworden
4 okt 2003
Berichten
51
Hoi,

Kan iemand mij helpen? ik heb een progje geschreven in delphi. Werkt helemaal, ik wil alleen een deel (vet gedrukt) van het programma dmv recursie laten uitvoeren. Hieronder staat de code die ik tot nu toe heb.

program Sorteren;

{$APPTYPE CONSOLE}

uses
SysUtils;
const MaxAantal = 40;
type Student = record
Naam : string[20];
RoepNaam : string[12];
Nr : integer;
email : string[25];
end;
StudentFile = file of Student;
StudentArType = array[1..MaxAantal] of Student;

var StudAr: StudentArType;
n, i, j : integer;
StudF: StudentFile;
hRec: Student;
begin
assign (StudF, 'StudGeg.dat');
reset(StudF);
for i:=1 to MaxAantal do
begin
StudAr.Nr:=0;
StudAr.Naam:='';
StudAr.RoepNaam:='';
end;
n:=0;
while not eof(StudF) do
begin
n:=n+1;
read(StudF, StudAr[n]);
end;

for i:=n downto 2 do
for j:=1 to i-1 do
if StudAr[j].Naam > StudAr[j+1].Naam
then
begin
hRec:= StudAr[j];
StudAr[j]:=StudAr[j+1];
StudAr[j+1]:=hrec;
end;


close(StudF);
for i:=1 to n do
with StudAr do
begin
writeln('Studentnummer: ',Nr);
writeln('Roepnaam : ',RoepNaam);
writeln('Naam : ',Naam);
writeln('E-mailadres : ',Email);
writeln;
end;
readln;
end.

alvast bedankt...
Groet...
 
Even snel gekeken....

Wat je nu hebt is een bubble-sort. Dat is per definitie uhm... sja recursief zou je het ook kunnen noemen maar ik denk dat het toch iteratief is.
Beetje: Zoek de grootste en zet die achteraan. Dan met de rest weer verder. etc.
Als je 'echt' recursief wilt sorteren zul je het moeten ombouwen naar iets als quicksort ofzo. Pak eerste element en splits de rest naar kleiner/groter. Kleiner komt voor het eerste element, groter erna en sorteer die beide groepen weer. Dat zou je recursief kunnen schrijven.

Met bubble-sort kun je alleen maar een procedure aanroepen die het kleinere deel weer sorteert.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan