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?