Thema: Delphi Quicksort: Nur Nullen

Einzelnen Beitrag anzeigen

Rumnic

Registriert seit: 15. Aug 2008
3 Beiträge
 
#1

Quicksort: Nur Nullen

  Alt 15. Sep 2008, 17:12
Hallo, mein erster Post hier und ich komme mal gleich zur Sache

Ich brauche ein Programm, welches einen sortierten Array durch binäres Suchen nach der gewünschten Zahl durchsuchen soll. Soweit bin ich aber noch garnicht gekommen, weil mein Quicksort nur Nullen ausgibt oder ich einen anderen blöden Fehler drin habe, den ich einfach nicht finde. Dazu soll gesagt sein, dass ich noch nicht lange am Programmieren bin und mein Informathik-Lehrer ziemlich flott vorran geht ^^.

Der Quicksort stammt aus einem Programm eines Mitschülers, in dessen Programm er wunderbar funktioniert, bei mir will er das jedoch nicht.
Delphi-Quellcode:
procedure quicksort(var arr : tZahlen; lo, hi : word);
procedure partition(var arr : tZahlen; lo, hi : word; var l, r : integer);

var pivot, temp: word;
begin
  l := lo;
  r := hi;
  pivot := arr[lo];
  while l < r do
  begin
    if arr[r] > pivot then
      r := r-1
    else if arr[l] <= pivot then
      l := l+1
    else
      begin
          temp := arr[l];
          arr[l] := arr[r];
          arr[r] := temp;
      end;
  end;

  arr[lo]:= arr[r];
  arr[r] := pivot;
  dec(r);
  inc(l);

end;

var l ,r : integer;

begin
  partition(arr, lo, hi, l, r);
  if lo<r then quicksort(arr, lo,r);
  if l<hi then quicksort(arr, l,hi);
end;
Das ist mein Quicksort und jetzt noch das Schreiben in den Array:
Delphi-Quellcode:
procedure TForm1.btSortClick(Sender: TObject);
var i, eingabe : word;
begin
  memSort.lines.clear;
  eingabe := strtoint(edEingabe.Text);
  quicksort(arrZahlen2, low(arrZahlen2), high(arrZahlen2));
  for i := 1 to eingabe do
    memSort.lines.add(inttostr(arrZahlen2[i]));
end;

Ich habe ein Feld, in welchem man angeben kann, wie viele Zufallszahlen erzeugt werden sollen, die dann sortiert werden. Kann auch sein, dass ich da einfach einen Fehler im übergeben des Arrays drin habe, aber irgendwie komme ich nicht drauf/übersehe es einfach.

Wäre sehr dankbar, wenn mir jemand auf die Sprünge helfen könnte.



Edit: Hätte noch ein kleines anderes Problem zu einem anderen Thema
Wie greift man auf den Wert eines Index in einem Array zu, wenn dieser Index aus mehreren Elementen besteht. Z.B. haben wir eine Telefonliste mit Nachname, Vorname und Telefonnummer in einer Zeile im Array und nun sollen wir den Array nach den Nachnamen sortieren. Wie greife ich also nur auf die Nachnamen im Array zu, ohne auch auf Vorname und Telefon zuzugreifen?
  Mit Zitat antworten Zitat