Entwickler-Ecke
Algorithmen, Optimierung und Assembler - Selection Sort
DelphiFreaks - Mi 19.01.05 10:08
Titel: Selection Sort
Hi, wir sitzen gerade im Informatikunterricht und haben ein Problem in Delphi, und zwar versuchen wir eine Sortierfunktion in eine Listenstruktur zu bringen, die Aufgabe lautet wie folgt:
:?: Gegeben sei ein Liste mit den Elementen: 1,3,7,4,5,9,8,2,10,6
Das Ergebnis nach Sortierung ist natürlich: 1,2,3,4,5,6,7,8,9,10
Wie kann man solch eine Sortierung vornehmen?
(wir hoffen ihr könnt uns weiter helfen!!)
Heiko - Mi 19.01.05 10:13
Nimm die Shellsort oder die Bubblesort. Am einfachsten ist aber das Austauschverfahren, ist dafür sehr langsam.
jasocul - Mi 19.01.05 10:17
Bei den Delphi-Demo-Programmen findet ihr unter "Threads" die drei gängigsten Sortier-Algorithmen.
Heiko - Mi 19.01.05 10:19
Hier die Quelltext aus einem Delphi-Buch bevor du ewig suchst:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure sort_austausch (var a: array of word); var bis,i,j : longint; h : word; begin bis := High(a); For i := 0 To bis - 1 do For j := i + 1 To bis do If a[i] > a[j] Then begin h := a[i]; a[i] := a[j]; a[j] := h; end; end; |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure sort_auswahl (var a: array of word); var bis,i,j,k : longint; h : word;
begin bis := high(a); For i := 0 To bis - 1 do begin h := a[i]; k := i; For j := i + 1 To bis do If a[j] < h Then begin h := a[j]; k := j; End; a[k] := a[i]; a[i] := h; end; end; |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| procedure sort_bubble (var a: array of word); var bis,i : longint; h : word;
begin bis := high(a); repeat For i := 0 To bis - 1 do If a[i] > a[i + 1] Then begin h := a[i]; a[i] := a[i + 1]; a[i + 1] := h; End; dec(bis); until bis = 1; End; |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| procedure sort_shell (var a: array of word); var bis,i,j,k : longint; h : word;
begin bis := high(a); k := bis shr 1; While k > 0 do begin For i := 0 To bis - k do begin j := i; While (j >= 0) And (a[j] > a[j + k]) do begin h := a[j]; a[j]:= a[j + k]; a[j + k] := h; dec(j,k); end; end; k := k shr 1; end; End; |
Die Shell_Sort ist dabei das schnellste Sortierverfahren. Aber zu bemerken ist, dass die Shellsort bei mir bisher immer die letzte Zahl nicht richtig sortiert hat (Fehler noch nicht gefunden).
PS: Das ich dir den Quelltext poste liegt nur daran, dass du im Informatikunterricht sitzt und wahrscheinlich keine Zeit hast, das ganze Internet zu durchsuchen.
Moderiert von
UGrohne: Code- durch Delphi-Tags ersetzt.
DelphiFreaks - Mi 19.01.05 10:31
Recht herzliches Dankeschön, wir haben die Infos übernommen und probieren mal aus
Heiko - Mi 19.01.05 10:32
@ DelphiFreaks
warum hast du dein Thema "Selection Sort" genannt?
Als Hinweis noch, die oben von mir geposteten Quelltext sind nur zum sortieren von Integerzahlen da (für Strings gibt es aber ähnliche).
Moderiert von
Udontknow: Postings zusammengefasst.
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!