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:
itu sudah ada mas Yohanes..
Post a Comment