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 szybkie (quicksort) - Implementacja w Delphi/Pascal
Ocena użytkownikóww: *****  / 15
SłabyŚwietny
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.
Dodaj komentarz