Senin, 30 Maret 2015

Program Heap Sort pada Pascal



Selamat Pagi
Ini program Sorting dengan jenis Heap Sort. Programnya biasa, hanya menampilkan data yang di random oleh komputer. semoga program ini bermanfaat bagi kalian. ^^

Source Code

Program Heap_Sort;
uses crt;

Type    TIntArray = array[1..100] of integer;
var     data      : TIntArray;
        i         : integer;

Procedure SiftDown(var a: TIntArray ; start, ende :integer);
var root, child, swap : integer;
begin
 root:=start;
 while root*2-start+1<=ende do
 begin
  child:=root*2-start+1;
  if (child+1<=ende) and (a[child]<a[child+1]) then
  inc(child);
  if a[root]<a[child] then
  begin
   swap:=a[root];
   a[root]:=a[child];
   a[child]:=swap;
   root:=child;
  end
  else
  exit;
 end;
end;

Procedure heapify(var a: TIntArray);
var start, count : integer;
begin
 count:=length(a);
 start:=low(a)+count div 2-1;
 while start>=low(a) do
 begin
  siftdown(a, start, high(a));
  dec(start);
 end;
end;

Procedure heapsort(var a:TintArray);
var ende, swap : integer;
begin
 heapify(a);
 ende:=high(a);
 while ende>low(a) do
 begin
  swap:=a[low(a)];
  a[low(a)]:=a[ende];
  a[ende]:=swap;
  dec(ende);
  siftdown(a,low(a),ende);
 end;
end;

Begin
 clrscr;
 Randomize;
 gotoxy(28,1); writeln('>>> PROGRAM HEAP SORT <<<');
 writeln;
 writeln('Data Sebelum di Sorting : ');
 for i:=low(data) to high(data) do
 begin
  data[i]:=Random(high(data));
  write(data[i]:4);
 end;
 writeln;
 heapsort(data);
 writeln('Data Sesudah di Sorting : ');
 for i:=low(data) to high(data) do
 begin
  write(data[i]:4);
 end;
 readln
End.

Tidak ada komentar:

Posting Komentar