PROGRAM PENGURUTAN
Pengurutan data (sorting) didefinisikan sebagai
suatu proses untuk menyusun
kembali humpunan obyek menggunakan aturan tertentu.
Mnurut Microsoft Book-shelf,
definisi algoritma pengurutan adalah algoritma
untuk meletakkan kumpulan elemen data
ke dalam urutan tertentu berdasarkan satu atau
beberapa kunci dalam tiap-tiap elemen.
Ada dua macam urutan yang biasa digunakan dalam
proses pengurutan yaitu
• urut naik (ascending) yaitu dari data yang
mempunyai nilai paling kecil sampai paling
besar
• urut turun (descending) yaitu data yang mempunyai
nilai paling besar sampai paling
kecil.
Contoh : data bilangan 5, 2, 6 dan 4 dapat
diurutkan naik menjadi 2, 4, 5, 6 atau diurutkan
turun menjadi 6, 5, 4, 2. Pada data yang bertipe
char, nilai data dikatakan lebih kecil atau
lebih besar dari yang lain didasarkan pada urutan
relatif (collating
sequence)
seperti
dinyatakan dalam tabel ASCII (Lampiran)
Keuntungan dari data yang sudah dalam keadaan
terurutkan antara lain :
• data mudah dicari (misalnya
dalam buku telepon atau kamus bahasa), mudah untuk
dibetulkan, dihapus, disisipi atau digabungkan.
Dalam keadaan terurutkan, kita
mudah melakukan pengeekan apakah ada data yang
hilang
• melakukan komppilasi
program komputer jika tabel-tabel simbol harus dibentuk
• mempercepat proses
pencarian data yang harus dilakukan berulang kali.
48
Data yang diurutkan sangat bervariasi, dalam hal
jumlah data maupun jenis data
yang akan diurutkan. Tidak ada algoritma terbaik
untuk setiap situasi yang kita hadapi,
bahkan cukup sulit untuk menentukan algoritma mana
yang paling baik untuk situasi
tertentu karena ada beberapa faktor yang
mempengaruhi efektifitas algoritma pengurutan.
Beberapa faktor yang berpengaruh pada efektifitas
suatu algoritma pengurutan antara
lain:
• banyak data yang diurutkan
• kapasitas pengingat apakah
mampu menyimpan semua data yang kita miliki
• tempat penyimpanan data,
misalnya piringan, pita atau kartu, atau media penyimpan
yang lain.
Pemilihan algoritma sangat ditentukan oleh struktur
data yang digunakan. Metode
pengurutan yang digunakan dapat diklasifikasikan
menjadi dua katagori yaitu :
• pengurutan internal, yaitu
pengurutan dengan menggunakan larik (array). Larik
tersimpan dalam memori utama komputer
• pengurutan eksternal, yaitu
pengurutan dengan menggunakan berkas (sequential
access file). Berkas tersimpan dalam
pengingat luar, misalnya cakram atau pita
magnetis.
Untuk menggambarkan pengurutan dengan larik, bisa
kita bayangkan semua kartu
terletak di hadapan kita sehingga semua kartu
terlihat dengan jelas nomornya. Pada
penyusunan kartu sebagai sebuah berkas, kita
bayangkan semua kartu kita tumpuk
sehingga hanya kartu bagian
atas saja yang bisa kita lihat nomornya.
Ini adalah sebuah program urut dengan
masukan 4 nama buah, yang kemudian akan di keluarkan secara berurutan
berdasarkan abjad. Pengurutan dalam program ini dapat kita lakukan secara
Ascending ataupun Descending. Berikut adalah Source Code dari program urut
beserta gambarnya.
Berikut ini adalah
contoh source code
dari ascending dan
descending....
Program Urut;
uses wincrt;
label
1,2;
var x
: array[0..3] of string;
y : array[0..3] of string;
pilih : char;
i : integer;
y : array[0..3] of string;
pilih : char;
i : integer;
procedure Ascending;
var
i, j, tempatnya_max : integer;
max, temp : string;
begin
for j := 0 to 3 do
begin
max := x[j];
for i := j to 3 do
max := x[j];
for i := j to 3 do
begin
if (x[i] <= max) then
begin
max := x[i];
tempatnya_max := i;
max := x[i];
tempatnya_max := i;
end;
end;
temp := x[j];
x[j] := x[tempatnya_max];
x[tempatnya_max] := temp;
temp := x[j];
x[j] := x[tempatnya_max];
x[tempatnya_max] := temp;
end;
clrscr;
gotoXY(5,17); writeln('Hasil data yang telah di urut secara Ascending');
clrscr;
gotoXY(5,17); writeln('Hasil data yang telah di urut secara Ascending');
for i := 0 to 3 do
begin
gotoxy(25,19+i);
write(x[i]);
end;
end;
procedure Descending;
var
i,j, tempatnya_min : integer;
min, temp : string;
begin
for j := 0 to 3 do
begin
min := x[j];
for i := j to 3 do
for i := j to 3 do
begin
if (x[i] >= min) then
begin
min := x[i];
tempatnya_min := i;
tempatnya_min := i;
end;
end;
temp := x[j];
x[j] := x[tempatnya_min];
x[tempatnya_min] := temp;
x[j] := x[tempatnya_min];
x[tempatnya_min] := temp;
end;
clrscr;
gotoXY(5,17); writeln('Hasil data yang telah di urut secara Descending');
gotoXY(5,17); writeln('Hasil data yang telah di urut secara Descending');
for i := 0 to 3 do
begin
gotoxy(25,19+i);
write(x[i]);
end;
end;
begin { Program Utama }
1 : gotoxy(5,1); writeln('Masukkan 4 nama buah');
write('Masukkan nama buah 1 : '); readln(x[0]);
write('Masukkan nama buah 2 : '); readln(x[1]);
write('Masukkan nama buah 3 : '); readln(x[2]);
write('Masukkan nama buah 4 : '); readln(x[3]);
clrscr;
for i := 0 to 3 do
write('Masukkan nama buah 3 : '); readln(x[2]);
write('Masukkan nama buah 4 : '); readln(x[3]);
clrscr;
for i := 0 to 3 do
begin
y[i]
:= x[i];
end;
repeat
2 : gotoxy(15,15); clrEoL;
gotoXY(34,6); writeln('Urutan Awal Data');
for i := 0 to 3 do
gotoXY(34,6); writeln('Urutan Awal Data');
for i := 0 to 3 do
begin
gotoXY(41,i+7);
write(y[i]);
end;
gotoXY( 5,2); write('|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ |');
gotoXY( 5,3); write('| Menu : |');
gotoXY( 5,4); write('|_______________|');
gotoXY( 5,5); write('|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ |');
gotoXY( 5,6); write('| 1. Ascending |');
gotoXY( 5,7); write('| 2. Descending |');
gotoXY( 5,8); write('| 3. New|');
gotoXY( 5,2); write('|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ |');
gotoXY( 5,3); write('| Menu : |');
gotoXY( 5,4); write('|_______________|');
gotoXY( 5,5); write('|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ |');
gotoXY( 5,6); write('| 1. Ascending |');
gotoXY( 5,7); write('| 2. Descending |');
gotoXY( 5,8); write('| 3. New|');
gotoXY( 5,9); write('| 0. Quit |');
gotoXY( 5,10); write('|_______________|');
gotoXY( 5,10); write('|_______________|');
gotoXY( 5,11); write('|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ |');
gotoXY( 5,12); write('| Pilih : |');
gotoXY( 5,13); write('|_______________|');
gotoXY(17,12); pilih := readkey;
if pilih = '1' then
gotoXY( 5,13); write('|_______________|');
gotoXY(17,12); pilih := readkey;
if pilih = '1' then
Ascending
else if pilih = '2' then
Descending
else if pilih = '3' then
begin
clrscr;
goto 1;
clrscr;
goto 1;
end
else
begin
clrscr;
gotoxy(15,15); write('Maaf anda hanya dapat memilih dari no 0-3');
clrscr;
gotoxy(15,15); write('Maaf anda hanya dapat memilih dari no 0-3');
readkey;
goto 2;
clrscr;
clrscr;
end;
until pilih = '0';
end.