unit
quicksorteror;
interface
uses
Windows, Messages, SysUtils, Variants,
Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Button1: TButton;
Label2: TLabel;
ListBox1: TListBox;
Label3: TLabel;
ListBox2: TListBox;
Label4: TLabel;
Button2: TButton;
Button3: TButton;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
Data:array of integer;
public
{ Public declarations }
end;
var
TFQuicksort: TFQuicksort;
implementation
{$R
*.dfm}
procedure
QuickSort(var A:array of integer;iLo,iHi:integer);
var
Lo,Hi,Pivot,T:integer;
begin
Lo:=iLo;
Hi:=iHi;
Pivot:=A[(Lo+Hi) div 2];
repeat
while A[Lo]<Pivot do Inc(Lo);
while A[Hi]>Pivot do Dec(Hi);
if Lo<=Hi then
begin
T:=A[Lo];
A[Lo]:=A[Hi];
A[Hi]:=T;
Inc(Lo);
Dec(Hi);
end;
until Lo>Hi;
if Hi>iLo then QuickSort(A,iLo,Hi);
if Lo<iHi then QuickSort(A,Lo,iHi);
end;
procedure
TFQuickSort.Button1Click(Sender: TObject);
var
nilai:integer;
begin
//menambahkan nilai ke listbox
if TryStrToInt(Edit1.Text,Nilai) then
ListBox1.Items.Add(IntToStr(nilai));
//membersihkan komponen inputan nilai
Edit1.Clear;
//focus kursor ke inputan nilai
Edit1.SetFocus;
end;
procedure
TFQuickSort.Button2Click(Sender: TObject);
var
indek:Word;
begin
//menentukan panjang array
SetLength(Data,ListBox1.Items.Count);
//pemasukan nilai ke array
for indek:=0 to ListBox1.Items.Count-1 do
Data[indek]:=StrToInt(ListBox1.Items[indek]);
//proses pengurutan/sorting
QuickSort(data,Low(Data),High(Data));
//kosongkan hasil
ListBox2.Items.Clear;
//memasukkan nilai hasil
for indek:=0 to ListBox1.Items.Count-1 do
ListBox2.Items.Add(IntToStr(data[indek]));
end;
procedure
TFQuickSort.Button3Click(Sender: TObject);
begin
close;
end;
procedure
TForm1.Button2Click(Sender: TObject);
var
indek:word;
begin
//menentukan
panjang array setlength(data,listbox1.items.count);
//pemasukan
nilai arra for indek :=0 to listbox1.items.count -1 do Data[indek]
:=strtoint(listbox1.item[indek]);
//proses
pengurutan / sorting quicksort(data,low(data),high(data));
//kosongkan
hasil listbox2.item.clear;
//memasukkan
nilai hasil for indek :=0 to listbox1.item.count -1 do
listbox2.items.add(inttostr(data[indek]));
end;
procedure
TForm1.Button3Click(Sender: TObject);
begin
close;
end;
procedure
TForm1.FormCreate(Sender: TObject);
var
nilai:integer;
begin
//menambahkan
nilai ke listbox if trystrtoint(edit1.text,nilai)then
listbox1.items.add(inttostr(nilai));
//membersihkan
komponen inputan nilai edit1.clear;
//focus
kursor ke inputan nilai edit1.setfocus;
end;
end.
procedure
TForm1.Button1Click(Sender: TObject);
begin
end;
end.
0 komentar:
Posting Komentar