Autor Beitrag
Anfänger
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 128

WinXP
D3 Prof
BeitragVerfasst: Sa 24.01.04 02:45 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 550

Win XP Prof.
Mandrake 10.0

D6
BeitragVerfasst: 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.

ausblenden 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..32of Integer;
begin
ListBox1.Clear;
For i := Low(Speicherplatz) to High(Speicherplatz) do
 begin
  Speicherplatz[i] := Random(12345);
 end;
// Bubblesort Start
 For i := Low(Speicherplatz)+1 to High(Speicherplatz) do
   For j := High(Speicherplatz) downto i do
     If Speicherplatz[j] < Speicherplatz[j-1then
       Begin
        temp := Speicherplatz[j];
        Speicherplatz[j] := Speicherplatz[j-1];
        Speicherplatz[j-1] := Temp;
       end;
// Bubblesort Ende
For i := Low(Speicherplatz) to High(Speicherplatz) do
 ListBox1.Items.Add(IntToStr(Speicherplatz[i]));
end;


Das sollte dir weiterhelfen. :wink:

_________________
If accidentally read, induce vomitting.
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: 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.

_________________
We are, we were and will not be.
Anfänger Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 128

WinXP
D3 Prof
BeitragVerfasst: 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

www.delphipraxis.com/viewtopic.php?t=344

Er enthält viele Möglichkeiten Schleifen zu konstruieren und scheihnt auch sehr verständlich zu sein :!: