Delphi 7: Insertion Sort Problem

benurb

Mitglied
Hallo
Wir wollen mit Insertion Sort im Informatik Unterricht Karten sortieren. Unser bisheriger Code:

Code:
  procedure InsertionSort(var a: array of integer; lo,hi: integer);
var						  // das Feld a soll von a[lo] bis a[hi]
  i,u:integer;				 // sortiert werden;
  k,maxPos,c:integer;
begin
for i:=lo+1 to hi do begin
 c:=a[i];
 k:=i-1;
 while (c<a[k])and(k<1) do begin
  a[k+1]:=a[k];
  k:=k-1;
 end;
a[k]:=c;
Feldanzeigen;
end;

Wir bekommen immmer eine Access Violation oder er sortiert gar nichts. Ich weiß aber nicht was falsch ist.

Danke im Voraus
 
Prinzipiell solltest du abfragen, ob k>1 ist, nicht <1 (als Bedingung für die While-Schleife). Sonst wird sie wahrscheinlich "übersprungen".

Die AccessViolation ist ein Fehler, der sich ganz häufig bei Arrays einschleicht. Ganz egal, ob du ein statisches oder ein dynamisches Array hast, die Grenzen dürfen logischerweise nicht überschritten werden, und genau das scheint zu passieren. Entweder ihr gebt zu hohe oder zu niedrige Werte ein oder verarbeitet sie falsch. Das könnte zum Beispiel vorkommen, wenn du statt k:=i k:=i-1 schreibst. Da bin ich mir aber im Moment nicht sicher. Testet also ruhig mal, welche Grenzen richtig sortiert werden und tastet euch dann langsam an das ganze Feld an. Und geht euren Code im Kopf ruhig durch (ich musste am Montag auch den Programmablauf incl. Speicherverwaltung MALEN... ist also gar keine Schande ;)).

Viel Spaß noch mit dem Sortieren und melde(t) dich/euch ruhig, wenn es noch Probleme gibt.

Liebe Grüße
Hellie
 

Neue Beiträge

Zurück