Autor Beitrag
DelphiFreaks
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mi 19.01.05 10:08 
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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Mi 19.01.05 10:13 
Nimm die Shellsort oder die Bubblesort. Am einfachsten ist aber das Austauschverfahren, ist dafür sehr langsam.
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6386
Erhaltene Danke: 146

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mi 19.01.05 10:17 
Bei den Delphi-Demo-Programmen findet ihr unter "Threads" die drei gängigsten Sortier-Algorithmen.
Heiko
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Mi 19.01.05 10:19 
Hier die Quelltext aus einem Delphi-Buch bevor du ewig suchst:

ausblenden 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;


ausblenden 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;


ausblenden 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 + 1Then begin
                h    := a[i];
                a[i] := a[i + 1];
                a[i + 1] := h;
        End;
        dec(bis);
    until bis = 1;
End;


ausblenden 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;  { div 2 }
    While k > 0 do begin
        For i := 0 To bis - k do begin
            j := i;
            While (j >= 0And (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{ div 2 }
    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 user profile iconUGrohne: Code- durch Delphi-Tags ersetzt.
DelphiFreaks Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mi 19.01.05 10:31 
Recht herzliches Dankeschön, wir haben die Infos übernommen und probieren mal aus
Heiko
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: 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 user profile iconUdontknow: Postings zusammengefasst.