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



BeitragVerfasst: Sa 23.02.08 21:45 
Ich habe bereits Zahlen in mein Memo angezeigt. Nun möchte ich diese Sortieren.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.Button1Click(Sender: TObject);
var i:integer; //variable i wird deklariert
begin
  for i:=0 to 10 do begin 
    Zahlen[i]:=Random(100);  
    Memo1.Lines.Add(IntToStr(Zahlen[i])); 
  end;
end;


Kann mir irgendwer weiter helfen??


Moderiert von user profile iconChristian S.: Topic aus Wünsche, Anregungen & Kritik verschoben am Sa 23.02.2008 um 21:55
Moderiert von user profile iconChristian S.: Delphi-Tags hinzugefügt
Calculon
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 676

Win XP Professional
Delphi 7 PE, Delphi 3 PRO
BeitragVerfasst: Sa 23.02.08 22:18 
Ich denke mal, dass das Feld Zahlen global deklariert ist. Dann kannst du folgende Funktion benutzen, um dieses array zu sortieren (ungetestet):
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:
// Zahlen: array[1..n] of integer

procedure SelectSort(n: integer);
var
  i, j, h, z: integer;
begin
  for i := 1 to n-1 do
    begin
      h := Zahlen[i];
      z := i;
        for j := i + 1 to n do
          begin
            if h > Zahlen[j] then
              begin
                h := Zahlen[j];
                z := j
              end;
          end;
      Zahlen[z] := Zahlen[i];
      Zahlen[i] := h
    end;
end;


Gruß

Calculon
--

_________________
Hallo Mutti
klezmor
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 558


delphi 6 personal delphi 2005 personal
BeitragVerfasst: Sa 23.02.08 22:21 
Bubble Sort( der langsamste Sortieralgorithmus) Quicksort ist wesentlich schneller.

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
procedure TForm1.Button1Click(Sender: TObject);
var i,k:integer;
    sortiert:boolean;
begin
  i:=memo1.Lines.Count-1;
  repeat
    sortiert:=true;
    for k:=0 to i-1 do
    begin
      if strtoint(memo1.Lines[k])>strtoint(memo1.Lines[k+1]) then
      begin
        sortiert:=false;
        memo1.Lines.Exchange(k,k+1);
      end;
    end;
    dec(i);
  until sortiert or (i=1);
end;


Quicksort nach wikipedia:

procedure pQuickSort(var A:Array of integer;iLo,iHi:integer);
var Lo,Hi,T:integer;
    Pivot:integer;
begin
 Lo:=iLo;
 Hi:=iHi;
 Pivot:=A[(iLo+iHi) div 2];
 repeat
  while A[Lo]<Pivot do inc(Lo,1);
  while Pivot<A[Hi] do dec(Hi,1);
  if Lo<=Hi then
  begin
   T:=A[Lo];
   A[Lo]:=A[Hi];
   A[Hi]:=T;
   inc(Lo,1);
   dec(Hi,1);
  end;
 until Lo>Hi;
 if iLo<Hi then pQuickSort(A,iLo,Hi);
 if iHi>Lo then pQuickSort(A,Lo,iHi);
end;

_________________
"Beware of bugs in the above code; I have only proved it correct, not tried it." Donald Knuth