Autor Beitrag
longdonjohnson
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Mo 05.12.05 00:25 
hallo erstmal, bin leider noch ein völliger neuling :/
also meine frage ist, wie ich 10 zahlen sortieren kann... ja, ich habe die suche verwendet, ja ich war auf [url]www.sortieralgorhythmen.de[/url] etc. aber es hat nicht geholfen..
was mir helfen würde wäre z.B. ein konkretes beispiel an 4 oder 5 zahlen und nicht irgendwelche begriffe wie quicksort oder bubblesort an den kopf geworfen bekommen ;)

bis jetzt habe ich nur mit randomize 10 unterschiedliche zahlen erstellt:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
var a,b,c : integer;
Zufallszahlen: array [1..10of byte;
begin
   randomize;
    for a := 1 to 10 do
      repeat c :=random(100)+1;
    for b := 1 to 10 do if Zufallszahlen[b]=c then   // zahl schon vorhandne?
   begin
      c := 0
   end;
        if c > 0 then Zufallszahlen[a] := c; // c für a-ten array setzen, falls nicht vorhanden
   until c <> 0;
end;
azubi_20
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 593

WinXP SP2, Ubuntu 8.4
D7 Enterp., D2005 Prof., Java (Eclipse 3.4.0)
BeitragVerfasst: Mo 05.12.05 08:22 
schau dir das mal an :
www.dsdt.info/tipps/?id=369
Du musst das nur noch für ein Array anpassen.
Trotzdem rate ich dir, den Algorithmus zu verstehen und nicht einfach nur abzutippen... 8)
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Mo 05.12.05 09:24 
So sortiert man einfach (aber langsam):
A ist das Array, das die zu sortierenden Zahlen enthält und N ist die Anzahl der Zahlen. A[0] ist das erste Element.

Wir machen nun Folgendes (A=[5,3,2,8]):
1. Wir definieren uns eine sortierte Teilliste, die von A[0] bis A[j] geht. j ist zunächst 0, denn wir können sagen, das eine Liste, die nur aus einem Element besteht, sortiert ist. (Beispiel: Teilliste = [5], und die ist ja sortiert)

2. Nacheinander werden wir das jeweils nächste Element E in die Teilliste einfügen, das die Liste wieder sortiert ist.
3. Wenn wir mit allen Elementen fertig sind, ist die Liste sortiert.
Der erste Ansatz sieht also so aus:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
Procedure Sortiere (A : TArray; N : Integer);
Var
  i : Integer;

Begin
  j := 0;
  For i := 1 to N-1 do 
    FuegeSortiertEin (A, i-1, A(i]);
End;

So, jetzt kümmern wir uns um das 'FuegeSortiertEin'. Diese Prozedur soll ein Element in eine Liste an der richtigen Position einfügen. Wenn es also größer als das höchste Element ist, dann muss man es hinter das höchste Element packen, ist es größer als das zweithöchste Element, dann muss man das höchste um eins nach hinten verschieben und das Element da reinschreiben etc.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
Procedure FuegeSortiertEin (A : TArray; J, E : Integer);
Begin
  While (J>0and (A[J]>E) do begin // Solange Position noch nicht reicht
    A[J+1] := A[J];  // schiebe Element nach oben
    dec (J);  // und die Position nach unten
  End;
// J ist die Position, an der E eingefügt werden muss. Platz haben wir schon gemacht, da
// wir die Elemente oberhalb der Position schon jeweils um eins nach oben verschoben haben
  A[J] := E;
End;

_________________
Na denn, dann. Bis dann, denn.