algorytm.org

Implementacja w Delphi/Pascal

Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Sortowanie bąbelkowe (bubblesort) - Implementacja w Delphi/Pascal
Ocena użytkownikóww: *****  / 10
SłabyŚwietny
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.
Dodaj komentarz