Minggu, 15 Mei 2011

algotritma pengurutan

beberpa implementasi dari algoritma pengurutan seperti bubble sort, selection sort, insert sort, dan quick sort. Berikut adalah beberapa implementasi algoritma pengurutan dalam bahasa Pascal :
Bubble Sort
procedure bubblesort(var d:array100; c:integer);
var
i,j:integer;
begin
for i:=1 to c-1 do
for j:=c downto i+1 do
if(d[j] < d[j-1]) then swap(d[j],d[j-1]); end; Selection Sort procedure selectionsort(var d:array100; c:integer); var lok,i,j:integer; begin for i:=1 to c-1 do begin lok:=i; for j:= i+1 to c do if(d[j]0) and (temp < Data[j-1]) do begin Data[j]:=Data[j-1]; j:=j-1; end; Data[j]:=temp; end; end; Quick Sort procedure quicksort(var d:array100; a,b:integer); var a1,b1,pivot : integer; begin a1:=a; b1:=b; pivot := d[(a+b) div 2]; repeat while (d[a1] < pivot) do inc(a1); while (d[b1] > pivot) do
dec(b1);
if(a1 <= b1) then
begin
swap(d[a1],d[b1]);
inc(a1);
dec(a1);
end;
until (a1 <= b1);
if (a < b1) then
quicksort(d,a,b1);
if (a1 < b) then
quicksort(d,a1,b);
end;
Keterangan :
array100 adalah type array [1..100] of integer harus dideklarasikan terlebih dahulu pada type.
c adalah jumlah jumlah data pada.
Algoritma Pencarian

Pencarian Linier/Sekuensial
Pencarian Linier atau Pencarian Sekuensial (Bah.Ingg: Linear Search atau Sequential Search) adalah pencarian data secara linier (garis lurus), artinya adalah pencarian dilakukan secara teratur (secara sekuensial) dari awal sampai akhir data (atau bisa juga dari akhir ke awal data). Berikut adalah 2 fakta penting tentang pencarian linier:
• Hanya bagus untuk dipakai pada data yang acak/tak terurut (unsorted)
• Kompleksitasnya adalah O(n)
Berikut adalah implementasi dari pencarian linier memakai function untuk pencarian data bertipe string:
type
TArrString = array of string;

function CariLinier(var Arr: TArrString; Cari: string): LongInt;
var
Idx, Batas, Ketemu: LongInt;

begin
Idx:= Low(Arr);
Batas:= High(Arr);
Ketemu:= -1;
while (Idx <= Batas) and (Ketemu = -1) do begin
if Arr[Idx] = Cari then Ketemu:= Idx;
Inc(Idx);
end;
CariLinier:= Ketemu;
end;
Penjelasannya:
type
TArrString = array of string;

function CariLinier(var Arr: TArrString; Cari: string): LongInt;
var
Idx, Batas, Ketemu: LongInt;

begin
Idx:= Low(Arr); // Dapatkan index terendah dari array
Batas:= High(Arr); // Dapatkan index tertinggi dari array
Ketemu:= -1; // Asumsi awal: belum ketemu

// Lakukan perulangan selama data yang dicek belum habis
// (Idx <= Batas) dan belum ketemu (Ketemu = -1)
while (Idx <= Batas) and (Ketemu = -1) do begin

// Jika array di posisi Idx adalah data yang dicari, maka
// posisi Ketemu ada di posisi Idx saat ini
if Arr[Idx] = Cari then Ketemu:= Idx;

// Naikkan posisi Idx (Cek data berikutnya)
Inc(Idx);
end;
CariLinier:= Ketemu;
end;