Entwickler-Ecke
Sonstiges (Delphi) - Integer-Werte in Arrays sortieren
Anfänger - Sa 24.01.04 02:45
Titel: Integer-Werte in Arrays sortieren
Meine Hausaufgabe lautet Integers in Arrays zu sortieren.
:oops:
Ich habe einen Array nämlich: Speicherplatz [1..32]
Dieser hat eine Eigenschaft die ich 'Index' nannte und ein Integer-Wert ist.
Nun soll das programm die Eigenschaften:Index von allen auslesen und sie wieder in der richtigen Reihenfolge einsortieren. Dabei soll Speicherplatz[1] den niedrigsten Wert, Speicherplatz[2] den zweitniedrigsten Wert,...und Speicherplatz[32] den höchsten Wert erhalten.
Das Schwierige ist, dass Schleifenanweisungen genommen werden müssen, damit ich Später aus 32Speicherplätzen mehr machen kann, ohne groß die Programmierung zu ändern.
Währe nett, wenn mir jemand einen Sourcecode Schreiben könnte. :roll:
Freue mich allerdings für jede Hilfe
Stehe führ weitere Fragen natürlich offen :!:
Ex0rzist - Sa 24.01.04 04:12
Hallo,
ich habe dir mal eine Prozedur geschrieben, die ein beliebiges Array mit Zufallszahlen füllt, sortiert und anschliessend in einer ListBox ausgibt.
Als Sortierverfahren kommt Bubblesort zum Einsatz. Das ist so ziemlich das einfachste, wenn auch langsamste, von allen Sortierverfahren.
Um das Ganze variabel zu gestalten, habe ich statt absoluter Zahlen die Grenzen des Arrays verwendet [
Minimum = Low(Variable) und
Maximum = High(Variable)]. Du brauchst also nur noch deine Variable anzupassen.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| procedure TForm1.Button1Click(Sender: TObject); var i,j,temp : Integer; Speicherplatz : Array[1..32] of Integer; begin ListBox1.Clear; For i := Low(Speicherplatz) to High(Speicherplatz) do begin Speicherplatz[i] := Random(12345); end; For i := Low(Speicherplatz)+1 to High(Speicherplatz) do For j := High(Speicherplatz) downto i do If Speicherplatz[j] < Speicherplatz[j-1] then Begin temp := Speicherplatz[j]; Speicherplatz[j] := Speicherplatz[j-1]; Speicherplatz[j-1] := Temp; end; For i := Low(Speicherplatz) to High(Speicherplatz) do ListBox1.Items.Add(IntToStr(Speicherplatz[i])); end; |
Das sollte dir weiterhelfen. :wink:
Gausi - Sa 24.01.04 11:57
Zitat: |
Das ist so ziemlich das einfachste, wenn auch langsamste, von allen Sortierverfahren.
|
:mahn: Nein, das stimmt nicht so ganz. Wenn man den Bubblesort noch ein klein wenig modifiziert, ist er genauso einfach, aber manchmal schneller: Beim durchbubblen einfach merken, ob eine Vertauschung durchgeführt wurde. Wenn nicht, ist man mit dem Sortieren fertig, ansonsten muss man nochmal durchbubblen. Dann hat Bubblesort im günstigsten Fall eine lineare Laufzeit. Sortieren durch Auswahl z.B. benötigt immer quadratische Zeit, so wie diese Bubblesortvariante hier...
Aber da das eine Hausaufgabe ist, geht das so in Ordnung. Auf der anderen Seite kannst du ja mal deinen Lehrer schocken und Quicksort oder so implementieren...Nicht ganz einfach, aber eben schnell, zumindest in der Praxis.
Anfänger - Sa 24.01.04 15:06
Danke funktioniert super :lol:
Danke für die Hilfe
Der SourceCode hat sofort funktioniert.
Danke auch führ den Hinweis auf Quicksort. Dadurch konnte ich auch mal weiter in anderen Seiten suchen und bin schließlich in Delphi-Praxis auf was gestoßen, was mir glaube ich weiter hilft.
wen's interessiert, der link ist
http://www.delphipraxis.com/viewtopic.php?t=344
Er enthält viele Möglichkeiten Schleifen zu konstruieren und scheihnt auch sehr verständlich zu sein :!:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!