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.
Nama : M.Ropianto, M.Kom
NIDN: : 102867804
Status : Dosen Tetap YAPISTA / STT Ibnu Sina
Pengampuh Matakuliah : Algoritma
STT IBNU SINA BATAM
http://sttibnusinabatam.ac.id
Penerimaan Mahasiswa Baru 2015 ,
https://docs.google.com/forms/

Mantep
BalasHapusSemoga menjadj blog yg lebih baik.. :)
BalasHapusMantap
BalasHapusSemoga bermanfaat
BalasHapusmantap
BalasHapusTerima kasih kepada teman-teman yang sudah parkir di blog ku,semoga saran dan kritikan menjadi pelajaran bagi saya untuk memperbaikinya ke depan untuk lebih baik lagi.
BalasHapus