!Please wait..>

Merge Sort ( O (n log n) )

Minggu, 26 Januari 2014
Posted by Unknown
Merge sort adalah algoritma yang berjalan dengan waktu O(N log N), yang jauh lebih efisien daripada O(N^2), dan akan berjalan jauh lebih cepat untuk N yang besar.
Algoritma merge sort sesungguhnya sangat sederhana: Bagi array menjadi dua sama besar, sort bagian pertama, sort bagian kedua, lalu gabungkan. Tentu sort ini menggunakan prosedur rekursif dengan parameter index paling kiri (a) dan index paling kanan (b).


procedure sort(terkiri,terkanan:longint);
begin
   if terkiri < terkanan then
   begin
      sort(terkiri,(terkiri+terkanan) div 2);
      sort(((terkiri+terkanan) div 2) + 1, terkanan);

      merge(terkiri,(terkiri+terkanan) div 2,
           ((terkiri+terkanan) div 2)+1,terkanan);
   end;

end;
Quick Sort adalah algoritma sort yang tercepat dari antara sort-sort O(N log N) lainnya. Tetapi, Quick Sort juga algoritma yang running timenya tidak stabil. Artinya, dijamin 99,9999% bahwa Quick Sort akan berjalan dengan sangat cepat, tetapi pada kasus-kasus tertentu Quick Sort akan berjalan agak lambat, dan kalau sedang sial, untuk input tertentu (worst case) Quick Sort akan berjalan dengan waktu O(N2). Tapi pada umumnya (average case), Quick Sort berjalan dengan waktu O(N log N).

procedure quicksort(terkiri,terkanan:longint);
var kiri,kanan,temp,pivot:longint;
begin
if terkiri
begin
   kiri:=terkiri;
   kanan:=terkanan;
   pivot:=data[(kiri+kanan) div 2];

   while kiri<=kanan do
   begin
      while data[kiri]
      while data[kanan]>pivot do dec(kanan);

      if kiri<=kanan then
      begin
         temp:=data[kiri];
         data[kiri]:=data[kanan];
         data[kanan]:=temp;
         inc(kiri);
         dec(kanan);
      end;
   end;
   quicksort(terkiri,kanan);
   quicksort(kiri,terkanan);
end;

end;

Selection Sort ( O(n^2) )

Jumat, 24 Januari 2014
Posted by Unknown
Selection Sort merupakan sorting yang bisa dibilang cukup mudah dan bisa dilakukan di tempat (tanpa bantuan array lain).Dasarnya pada setiap langkah, carilah elemen terkecil yang tersisa lalu letakkan di depan.

procedure selectionsort;
var i,j,min,temp :integer;
begin
    for i:=1 to n-1 do
begin
 min:=i;
 for j:=i+1 to n do
   begin
      if data[j] < data[min] then min:=j;
   end;
 if min <>i then
     begin
temp:=data[min];
data[min]:=data[i];
data[i]:=temp;
     end;
end;
end.


Keterangan :
i,j digunakan untuk looping.
data[] array bertipe integer (di deklarasikan pada program utama)
n adalah jumlah data (dideklarasikan pada program utama)
temp adalah var temporary digunakan untuk swap

Welcome to My Blog

Hot Post!!

Pengikut

- Copyright © Zis Here ! -Robotic Notes- Powered by Blogger - Designed by Johanes Djogan -