Thursday, August 5, 2010

pembahasan radix short

PEMBAHASAN PROGRAM

berikut merupakan pembahasan dari tulisan ini

http://laksonoadi.blogspot.com/2010/08/radix-short-dengan-pascal.html

Implementasi dari algoritma tersebut dibuat menggunakan bahasa pascal, dengan menggunakan random pada penginputan kemudian Array A adalah array input dan array B adalah array A yang sudah terurut kanan dan Array C adalah array A yang sudah terurut.

PROGRAM UTAMA

program radix_sort;

uses crt;

type list = array [1..10]of integer;

var

list1,list2,list3 :list;

b:integer;

i,k,jum,max:byte;

//fungsi pangkat

function pangkat(a : integer; b : integer) : integer;

var i : integer; temp : integer;

begin

temp := 1;

for i := 1 to b do

begin

temp := temp * a;

end;

pangkat := temp;

end;

//fungsi input

procedure input(var a,b,c:list;max:integer);

begin

for i:=1 to max do

begin

a[i]:=random(999);c[i]:=a[i];b[i]:=a[i];

end;

end;

Keterangan:

a: 134 b: 134 c: 134

251 251 251

224 224 224

352 352 352

Jadi array a,b,c pada proses awal input nilainya adalah sama

//PROCEDURE LEBAR => untuk mengetahui lebar angka

procedure lebar(var jum:byte;a:list;max:byte);

var i,j:byte;

begin

j:=0;

jum:=0;

for i:=1 to max do

begin

b:=a[i];

while (b<>0) do

begin

b:=b div 10;

j:=j+1;

end;

if (jum

j:=0;

end;

end;

Keterangan:

For i:=1 to max (max=4)

i=1, j=0

b:=a[i]

b:=a[1] = 134

Periksa apakah b<>0 ? Ya

b:= b div 10

b:= 134 div 10

b:= 13

j:=j+1

j:=0+1=1

b:=13 dan b<>0 maka

b:= b div 10

b:= 13 div 10

b:= 1

j:=j+1

j:=1+1=2

b:=1 dan b<>0 maka

b:= b div 10

b:= 1 div 10

b:= 0

j:=j+1

j:=2+1=3

If (0<3)>

Jum:=3

J:=0

//FUNGSI PENGURUTAN RADIX

procedure radix(var a,c:list;jum,max:byte);

var e,i,j,k,konter:byte;

b:integer;

begin

for i:=1 to jum do

begin

konter:=0;

for e:=0 to 9 do

begin

for j:=1 to max do

begin

b:=(a[j]div(pangkat(10,i-1))) mod 10;

if (b=e) then

begin

konter:=konter+1;

c[konter]:=a[j];

writeln('berubah pada saat i=',i,' bilangan=',e,' dan urutan ke=',j);

writeln('yang di konter=',konter,' adalah ',c[konter]);

end;

end;

end;

writeln;

writeln;

for k:=1 to max do

begin

a[k]:=c[k];

end;

end;

end;

for i:= 1 to jum do (jum=3)

konter=0

for e=0 to 9 do

for j:=1 o max(max=4)

j=1,i=1,e=0

b=a[j] div(pangkat(10,i-1)) mod 10

b=a[1] div(pangkat(10,i-1)) mod 10

b=134 div(pangkat(10,1-1)) mod 10

b=(134 div (10^0)) mod 10

b=(134 div 1) mod 10

b=4

Jadi, if (b=e) → (4≠0) then lanjutkan sampai e=9

PROGRAM UTAMA

begin

max:=5;

input(list1,list2,list3,max);

lebar(jum,list3,max);

radix(list1,list2,jum,max);

for k:=1 to max do

begin

writeln(list3[k],' ',list1[k]);

end;

end.

KESIMPULAN

Ø Radix sort adalah algoritma pengurutan data yang cepat, efektif dan sederhana

Ø Dalam penggunaannya radix sort bahkan bisa dimodifikasi sehingga bisa digunakan untuk mengurutkan data - data negative, float dan pecahan untuk kasus – kasus tertentu

2 comments:

Unknown said...
This comment has been removed by the author.
Dwi Adi Laksono said...

itu sudah ada mas Yohanes..