Ocena użytkownikóww: ***** / 15
Nadesłany przez Michał Knasiecki, 13 sierpnia 2005 01:00
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.
quick_d/Unit1.pas:
//Sortowanie metodą QuickSort
//www.algorytm.org
//(c)Michal Knasiecki
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
ListBox1: TListBox;
ListBox2: TListBox;
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type tab=array[1..32000]of integer;
var
Form1: TForm1;
tablica:tab;
implementation
{$R *.DFM}
Procedure Quick(Od,Do_ : Integer);
Var
i,j : Integer;
x,temp : Integer;
Begin
i:=Od;
j:=Do_;
X:=Tablica[ (Od+Do_) div 2];
Repeat
While Tablica[i]<x do i:=i+1;
While x<Tablica[j] do j:=j-1;
if i<=j Then
Begin
Temp:=Tablica[i];
Tablica[i]:=Tablica[j];
Tablica[j]:=Temp;
i:=i+1;
j:=j-1;
End;
Until i>j;
if Od<j Then quick(Od,j);
if i<Do_ Then quick(i,Do_);
End;
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
//Wczytaj liczby do tablicy
for i:=0 to listbox1.Items.Capacity-1 do
tablica[i+1]:=strtoint(listbox1.items[i]);
//posortuj
quick(1,listbox1.Items.Capacity);
//i wypisz
listbox2.clear;
for i:=0 to listbox1.Items.Capacity-1 do
listbox2.items[i]:=inttostr(tablica[i+1]);
end;
end.