unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids;
CONST Max = 1000000;
type
Feld =
ARRAY [ 1..Max]
OF Byte;
TForm1 =
class(TForm)
ListBox1: TListBox;
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Button3: TButton;
StringGrid1: TStringGrid;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1 : TForm1;
Namen : TStringList;
F : Feld;
bla :
Array[0..9]
of String;
implementation
{$R *.dfm}
{procedure anzeigen (grid : TStringGrid);
var x : Integer;
begin
For x := 0 to 7 do
begin
grid.Cells[x,0] := IntToStr(Werte[x,0]);
grid.Cells[x,1] := IntToStr(Werte[x,1]);
end;
end;}
PROCEDURE Quicksort ( Von , Bis : LongInt);
VAR lz,rz : LongInt;
t : Byte;
{ Trennelement }
hilf : Byte;
BEGIN
lz := Von; rz := Bis;
{ linker und rechter Zeiger }
t := F [ ( Von+Bis )
DIV 2 ];
{ Trennelement aus Folgenmitte }
REPEAT
WHILE F[lz] < t
DO Inc(lz);
{ linker Zeiger nach rechts }
WHILE t < F[rz]
DO Dec(rz);
{ rechter Zeiger nach links }
IF lz <= rz
THEN { falls keine šberschneidung... }
BEGIN
hilf := F[lz];
{ dann Austausch der Elemente }
F[lz] := F[rz];
{ die bezglich dem Trennelement}
F[rz] := hilf;
{ auf der falschen Seite stehen }
Inc(lz);
{ Anschlieáend die Zeiger eine }
Dec(rz);
{ Position weiterrcken }
END { Tauschen }
UNTIL lz > rz;
{ bis šberschneidung der Zeiger }
IF Von < rz
THEN QuickSort ( Von , rz);
{ linkes Teilfeld sortieren }
IF lz < Bis
THEN QuickSort ( lz, Bis );
{ rechtes Teilfeld sortieren }
END;
procedure TForm1.FormCreate(Sender: TObject);
begin
Namen := TStringlist.Create;
Namen.Add('
Anja');
Namen.Add('
Christoph');
Namen.Add('
Christian');
Namen.Add('
Daniel');
Namen.Add('
Dimitri');
Namen.Add('
Eldar');
Namen.Add('
Franz');
Namen.Add('
Fabio');
Namen.Add('
Peter');
Namen.Add('
Michi');
end;
procedure TForm1.Button1Click(Sender: TObject);
var x : Integer;
begin
Randomize;
for x := 1
to 10
do
namen.Exchange(random(namen.Count), random(namen.Count));
Listbox1.Items.Clear;
ListBox1.Items.AddStrings(Namen);
end;
procedure TForm1.Button3Click(Sender: TObject);
var x : Integer;
begin
Randomize;
if Edit1.Text = '
'
then
showmessage('
Bitte geben sie einen Namen ein')
else begin
Namen.Add(Edit1.Text);
for x := 1
to 10
do
namen.Exchange(random(namen.Count), random(namen.Count));
Listbox1.Items.Clear;
ListBox1.Items.AddStrings(Namen);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var i : Integer;
begin
For i := 0
to high(bla)
do begin
bla[i] := Namen.Strings[i];
Stringgrid1.Cells[i,0] := (bla[i]);
end;
//quicksort(bla[0], bla[high(bla)]);
end;
end.