Ocena użytkownikóww: ***** / 10
Nadesłany przez Tomasz Lubiński, 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.
bubble_d/SortB.pas:
//sortowanie bąbelkowe
//www.algorytm.org
//Tomasz Lubiński (c)2001
unit SortB;
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;
Button2: TButton;
Label3: TLabel;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
z: Array[1..100] of Integer;
n:Integer;
implementation
{$R *.DFM}
procedure TForm1.Button2Click(Sender: TObject);
var a:Integer;
begin
n:=100; //liczba elementów do sorotwania
Button1.Enabled:=True; //uaktywnienie przycisku sortuj
ListBox1.Items.Clear; //wyczyszczenie list box'ów
ListBox2.Items.Clear;
randomize;
for a:=1 to n do
begin
z[a]:=Random(200); //zakres nieposorotwanych od 0 do 200
ListBox1.Items.Add(IntToStr(z[a])); //dodawanie elentów do listy nieposortowane
end
end;
procedure TForm1.Button1Click(Sender: TObject);
var
t: Boolean;
c,i: Integer;
begin
Button1.Enabled:=False;
repeat
t:=true; i:=n;
repeat
i:=i-1;
if z[i+1]< z[i] then
begin //zamniana elementów jeżeli większy poprzedza mniejszy
c:=z[i];
z[i]:=z[i+1];
z[i+1]:=c;
t:=false;
end;
until i=1;
until t=true;
for c:=1 to n do
ListBox2.Items.Add(IntToStr(z[c]));
end;
end.