Upload
pengki-ekopurnomo
View
229
Download
1
Embed Size (px)
Citation preview
LAPORAN HASIL PRAKTIKUM
STRUKTUR DATA
NAMA : PENGKI
NIM : DBC 114 070
KELAS : B
MODUL : III ( PENGURUTAN
DATA )
JURUSAN/PROGRAM STUDI TEKNIK INFORMATIKAFAKULTAS TEKNIK
UNIVERSITAS PALANGKA RAYA2015
BAB I
TUJUAN DAN LANDASAN TEORI
A. TUJUAN
1. Mengetahui implementasi beberapa metode pengurutan data.
2. Mampu menerapkan metode pengurutan data pada sebuah program.
3. Mengetahui perbandingan kompleksitas beberapa metode pengurutan
data.
B. LANDASAN TEORI
Pengurutan data adalah proses yang dilakukan terhadap himpunan
data, disusun sedemikian rupa sehingga diperoleh data baru terurut. Pada
umumnya ada dua macam pengurutan, yaitu: (1) pengurutan secara
ascending (urut naik) dan (2) Pengurutan secara descending (urut turun).
Proses pengurutan seluruh data berada dalam memori disebut internal
sorting. Sedangkan bila data tidak berada di dalam memori disebut
external sorting.
Masalah utama dalam pengurutan adalah bagaimana mendapatkan
metode terbaik yang akan memberikan jumlah operasi pemindahan data
paling minimum. Kedua operasi tersebut akan mempengaruhi algoritma
pengurutan data. Umumnya kompleksitas algoritma biasa dilihat dari
waktu (time complexity) atau ruang (space complexity).
Algoritma pengurutan data yang akan diuraikan dan dilakukan
dalam praktikum sturktur data ini hanya mencakup tiga metode
pengurutan data yaitu: (1) Insertion Sort (Pengurutan Penyisipan), (2)
Selection Sort (Pengurutan Pemilihan), dan (3) Bubble Sort (Pengurutan
Gelembung). Berikut ini merupakan penjelasannya.
1. Insertion Sort (Pengurutan Penyisipan) Metode ini dilakukan dengan
cara menyisipkan elemen larik pada posisi yang tepat. Prinsip kerja
metode ini membagi dua data sedemikian rupa sehingga pada bagian
pertama menampung data yang sudah terurut dan bagian kedua
menampung data yang belum terurut.
1
Selanjutnya diambil satu data dari bagian yang belum terurut dan
dilakukan penyisipan ke bagian yang sudah terurut.
procedure insertionSort (var A: Tabel; N: integer);
{IS : Tabel A terdefinisi dengan N adalah banyaknya data}
{FS : Tabel A terurut membesar}
var
pass, i: integer; {counter}
temp : integer; {variabel untuk nilai sementara}
begin
for pass := 2 to N do
begin
temp := A[pass];
I := pass-1;
while ((temp < A[i]) and (i > 1)) do
begin
A[i+1] :=A [i];
i := i-1;
end;
if (temp < A[i]) then
begin
A[i+1] :=A [i];
i := i-1;
end;
A[i+1] := temp;
end;
end;
2
2. Selection Sort (Pengurutan Pemilihan) Metode minimum dan
maximum sort merupakan metode yang tergolong dalam selection sort.
Pada minimum sort, untuk meletakkan data pada posisi ke-i dilakukan
dengan mencari niai minimum data mulai dari posisi ke-i sampai
dengan posisi ke-N dengan N adalah banyaknya data. Untuk maximum
sort dilakukan dengan menggunakan nilai maksimum.
procedure switch (var A,B: Tabel);
{IS : Tabel A dan B berisi nilai missal A = x dan B = y}
{FS : A = y dan B = x }
var
temp: integer; {variabel untuk nilai sementara}
begin
temp := A;
A := B;
B := temp;
end;
procedure minimumSort (var A: Tabel; N: integer);
{IS : Tabel A terdefinisi dengan N adalah banyaknya data}
{FS : Tabel A terurut membesar}
var
pass, i: integer; {counter}
imin : integer; {variabel untuk indeks nilai minimum}
begin
for pass := 1 to N-1
begin
imin := pass;
for i := pass + 1 to N do
begin
if (A[imin] > A[i]) then imin := i;
if (imin <> pass) then switch(A[pass],
A[imin] );
3
end;
end;
end;
3. Bubble Sort (Pengurutan Gelembung) Prinsip dari bubble sort adalah
meletakkan nilai pada posisi ke-i dengan menggelembungkan atau
mengangkat nilai minimum dari i+1 sampai dengan N.
procedure bubbleSort (var A: Tabel; N: integer);
{IS : Tabel A terdefinisi dengan N adalah banyaknya data}
{FS : Tabel A terurut membesar}
var
pass, i: integer; {counter}
tukar : boolean; {true jika untuk satu kali pass terjadi
pertukaran}
begin
tukar := true;
pass := 1; 13
while ((tukar) and (pass < N)) do
begin
tukar := false;
for i := N downto pass+1 do
begin
if (A[i] < A[i-1]) then
begin
switch (A[i], A[i-1]) ) ;
tukar := true;
end;
end;
end;
end;
4
Implementasi dari ketiga metode sorting tersebut dilakukan
menggunakan data sebagai berikut.
Const
NMax = 100;
Type
Tabel = array[1..NMax] of integer;
5
BAB II
LANGKAH KERJA
Buatlah sebuah program dengan ketentuan sebagai berikut :
1. Pengurutan (sorting) menggunakan ketiga metode :
a. Insertion sort
b. Selection Sort
c. Bubble Sort
2. Masukan awal adalah data bertipe record mahasiswa dengan elemen :
NIM : integer;
Nama : string[30];
Alamat : string[50];
3. Proses pengurutan bisa dipilih berdasarkan NIM atau Nama secara
ascending.
4. Keluaran adalah data yang telah diurutkan.
6
BAB III
PEMBAHASAN
Karena untuk pengurutan data boleh menggunakan salah satu yakni
pengurutan NAMA atau NIM maka di sini saya menggunakan metode
pengurutan dengan NIM. untuk koding programnya adalah sebagai
berikut.
program sorting;
uses crt;
const
nmax = 50;
type
rdata = record
nim : integer;
nama : string[30];
alamat : string[50];
end;
aData = array [1..nmax] of rdata;
var
{variabel global}
data : aData;
plh, ch, pt : char;
x : integer;
{fungsi menu awal}
function menu : char;
var
c : char;
begin
7
clrscr;
writeln('--- Program Sorting Array dengan Urutan Ascending dan
Descending ---');
writeln;
writeln('1: Insertion Sort');
writeln('2: Selection Sort');
writeln('3: Bubble Sort');
writeln('4: Keluar Program');
repeat
writeln;
write('Pilih >> ');
c := readkey;
writeln(c);
if not (c in ['1'..'4']) then
writeln('Pilihan salah ...');
until(c in ['1'..'4']);
menu := c;
end;
{prosedur untuk tukar data untuk masukan data}
procedure tukar(i,j : integer);
var
temp : integer;
temp2 : string[50];
begin
temp := data[i].nim;
data[i].nim := data[j].nim;
data[j].nim := temp;
temp2 := data[i].nama;
data[i].nama := data[j].nama;
data[j].nama := temp2;
8
temp2 := data[i].alamat;
data[i].alamat := data[j].alamat;
data[j].alamat := temp2;
end;
{prosedur untuk masukan data}
procedure inputData(var A : aData; var n : integer);
var
i : integer;
begin
repeat
write('Berapa banyak data? ');
readln(n);
if n>0 then
begin
writeln;
for i:=1 to n do
begin
writeln('Mahasiswa ke-',i);
write('NIM (Hanya Tiga Angka Terakhir): ');
readln(data[i].nim);
write('Nama (Tanpa Simbol Apapun) : ');
readln(data[i].nama);
write('Alamat (Tanpa Simbol Apapun) : ');
readln(data[i].alamat);
writeln;
end;
end
else
writeln('Input salah...')
until(n>0);
9
end;
{prosedur Insertion Sort}
procedure iS(var A : aData; var ndata : integer);
var
temp,i,j : integer;
temp2,t emp3 : string[50];
begin
clrscr;
writeln('Input Data Insertion Sort');
writeln;
inputData(A,ndata);
{rutin kode}
for i:=2 to ndata do
begin
temp := A[i].nim;
temp2 := A[i].nama;
temp3 := A[i].alamat;
j := i-1;
while ((temp<A[j].nim) and (j>=1)) do
begin
A[j+1].nim := A[j].nim;
A[j+1].nama := A[j].nama;
A[j+1].alamat := A[j].alamat;
j := j-1;
end;
A[j+1].nim := temp;
A[j+1].nama := temp2;
A[j+1].alamat := temp3;
end;
end;
10
{prosedur Selection Sort}
procedure sS(var A : aData; var ndata : integer);
var
i,j,pos : integer;
begin
clrscr;
writeln('Input Data Selection Sort');
writeln;
inputData(A,ndata);
{rutin kode}
for i:=1 to ndata-1 do
begin
pos := i;
for j:=i+1 to ndata do
if (A[pos].nim > A[j].nim) then
pos := j;
if (pos<>i) then
tukar(pos,i);
end;
end;
{prosedur Bubble Sort}
procedure bS(var A : aData; var ndata : integer);
var
i,j : integer;
begin
clrscr;
writeln('Input Data Bubble Sort');
writeln;
inputData(A,ndata);
11
{rutin kode}
for i:=1 to ndata-1 do
for j:=ndata downto i+1 do
if (A[j].nim < A[j-1].nim) then
tukar(j,(j-1));
end;
{prosedur tampil data yang terurut Ascending}
procedure showUrut(A : aData; var ndata : integer);
var
i : integer;
begin
clrscr;
writeln('Tampilan Data Terurut');
writeln;
for i:=1 to ndata do
begin
writeln('NIM : ',A[i].nim);
writeln('Nama : ',A[i].nama);
writeln('Alamat : ',A[i].alamat);
writeln;
end;
end;
{prosedur tampil data yang terurut Descending}
procedure showUrut2(A : aData; var ndata : integer);
var
i : integer;
begin
clrscr;
writeln('Tampilan Data Terurut 2');
12
writeln;
for i:=ndata downto 1 do
begin
writeln('NIM : ',A[i].nim);
writeln('Nama : ',A[i].nama);
writeln('Alamat : ',A[i].alamat);
writeln;
end;
end;
{program utama}
begin
repeat
plh := menu;
case plh of
'1' : iS(data,x);
'2' : sS(data,x);
'3' : bS(data,x);
'4' : exit;
end;
writeln;
writeln('pilih tampilan');
writeln('1:Ascending');
writeln('2:Descending');
writeln('0:Keluar Program ');
pt := readkey;
if not (pt in ['1','2','0']) then
writeln(' >> Pilihan salah...')
else if (pt in ['0']) then
exit;
case pt of
'1':showUrut(data,x);
13
'2':showUrut2(data,x);
end;
writeln('Tekan sembarang
karakter untuk berikutnya...');
repeat
writeln('Tekan >> 1:
Kembali ke Menu, 0: Keluar Program');
ch := readkey;
if not (ch in
['1','0']) then
writeln(' >>
Pilihan salah...');
until(ch in ['1','0']);
until(ch = '0');
end.
Pembahasan Program
program sorting;
uses crt;
pada bagian ini menjelaskan nama program yakni sorting, selanjutnya
perintah di bawah nama program untuk memanggil perintah untuk fungsi –
fungsi di dalam Pascal yakni uses crt.
const
nmax = 50;
type
rdata = record
nim : integer;
nama : string[30];
alamat : string[50];
end;
14
aData = array [1..nmax] of rdata;
Pada bagian ini konstanta untuk masukan bernilai 50 masukan untuk array,
dengan tipe data pada bagian ini berupa rdata dengan tipe record (rekam).
Bagian di dalam rdata ini kemudian dibagi lagi menjadi 3 bagian, yakni
nim, nama, dan alamat. untuk nim dengan tipe data bilangan bulat (integer)
sedangkan untuk nama dan alamat menggunakan tipe data huruf (string)
dengan letak perbedaan pada jumlah untuk masukan per huruf untuk nama
dengan 30 huruf dan alamat dengan 50 huruf. pada bagian paling bawah
dengan perintah aData = array [1..nmax] of rdata maka untuk tipe data
adata menggunakan array dengan masukan dari rdata yang akan direkam.
var
{variabel global}
data : aData;
plh, ch, pt : char;
x : integer;
pada bagian ini untuk pendeklarasian variabel global (utama) dalam
program ini. sehingga variabel ini merupakan patokan untuk variabel –
variabel lain dalam sub program. Variabel data menggunakan nilai yang
sama dengan variabel aData jadi nilai dalam data akan di masukan ke
dalam array [1..nmax] hingga nilai nmax sampai pada nilai yang
ditentukan. Pada variabel berikutnya yakni plh, ch, dan pt menggunakan
tipe data karakter (char), dan variabel x bertipe data bilangan bulat
(integer.).
{fungsi menu awal}
function menu : char;
var
c : char;
15
begin
clrscr;
writeln('--- Program Sorting Array dengan Urutan Ascending dan
Descending ---');
writeln;
writeln('1: Insertion Sort');
writeln('2: Selection Sort');
writeln('3: Bubble Sort');
writeln('4: Keluar Program');
untuk membuat bagian pada sub menu pada bagian setelah masukan
masuk maka digunakan fungsi untuk pemanggilan menu.
Pada fungsi menu ini didefinisikan dengan tipe karakter (char).
untuk variabel dalam fungsi menu ini digunakan variabel c juga
didefinisikan dengan tipe data karakter (char).
Setelah definisi variabel dalam fungsi hanya dilakukan penampilan dalam
layar berupa kalimat – kalimat yakni “--- Program Sorting Array dengan
Urutan Ascending dan Descending --- dan juga untuk pilihan menu yakni
sebagai berikut untuk no 1 dengan Insertion Sort, no 2 Selection Sort, no
3 Bubble Sort, dan no 4 untuk Keluar Program dengan semua kursor untuk
masukan berada pada baris baru oleh adanya perintah writeline.
repeat
writeln;
write('Pilih >> ');
c := readkey;
writeln(c);
if not (c in ['1'..'4']) then
writeln('Pilihan salah ...');
until(c in ['1'..'4']);
menu := c;
end;
16
pada bagian ini di dalam fungsi menu untuk pembacaan masukan -
masukan yang akan dibuat dengan perulangan dengan demikian apabila
masukan untuk menu lain dari pilihan yang ada maka akan ada
pemberitahuan pilihan salah. Untuk masukan variabel c digunakan untuk
pembaca tiap masukan yang ada.
if not (c in ['1'..'4']) then
writeln('Pilihan salah ...');
Perintah di atas untuk melakukan pengecekan pada masukan apabila
masukan bukan dari 1 sampai 4 maka pemberitahuan bahwa pilihan slah
akan keluar.
until(c in ['1'..'4']);
menu := c;
end;
Perintah untuk membuat pendefinisian bagian masukan - masukan dalam
c yakni 1 sampai 4 dengan pendefinisian menu yang bertipe karakter tadi
dengan variabel c serta perintah end di sini untuk mengakhiri fungsi manu.
{prosedur untuk tukar data untuk masukan data}
procedure tukar(i,j : integer);
var
temp : integer;
temp2 : string[50];
Pada prosedur ini data akan di tukar sehingga data yang di masukan akan
berada dalam variabel yang sudah di tukarkan dalam prosedur ini. Pada
prosedur ini di definisikan variabel yang ada di dalamnya yakni i,j, temp
dan temp2. Variabel i dan j di gunakan untuk masukan data array,
sedangkan temp dan temp2 digunakan untuk pengganti data yang di
masukan ke dalam variabel tersebut. Di sini temp2 merupakan tipe data
huruf (string) dengan batasan hingga 50 huruf.
17
begin
temp := data[i].nim;
data[i].nim := data[j].nim;
data[j].nim := temp;
temp2 := data[i].nama;
data[i].nama := data[j].nama;
data[j].nama := temp2;
temp2 := data[i].alamat;
data[i].alamat :=
data[j].alamat;
data[j].alamat := temp2;
end;
Di sini perintah untuk penukaran data akan dilakukan tiap data yang di
masukan ke dalam data dengan variabel i pada akhirannya dengan tujuan
ke tiap dengan arah yang berbeda pada tipa input masukan misalnya temp
untuk data dengan array variabel i dengan alamat nim maka di ubah
menjadi data yang hanya di ubah variabelnya saja menjadi j. kemudian
data yang telah di ubah tadi dimasuknya ke dalam variabel temp. untuk
semua data juga di perlakukan hal yang sama hanya berbeda pada variabel
penentu terakhir dan alamatnya saja.
{prosedur untuk masukan data}
procedure inputData(var A : aData; var n :
integer);
var
i : integer;
Pada prosedur ini untuk pemasukan data dari piranti masukan variabel
yang di definisikan aldah A bernilai sama dengan aData n dan i bernilai
integer (bilangan bulat).
18
begin
repeat
write('Berapa banyak data? ');
readln(n);
if n>0 then
Di sini adalah pengulangan untuk menanyakan junlah data (untuk
mengalokasikan tempat untuk jumlah data yang akan di masukan). Untuk
jumlah data yang akan di masukan dibaca oleh variabel n. Di sini ada
perintah if n>0 then perintah ini untuk mengecek nilai masukan untuk
jumlah alokasi data yang akan di masukan apabila nilai n lebih besar dari
nol.
writeln;
for i:=1 to n do
begin
writeln('Mahasiswa ke-',i);
write('NIM (Hanya Tiga Angka Terakhir): ');
readln(data[i].nim);
write('Nama (Tanpa Simbol Apapun) : ');
readln(data[i].nama);
write('Alamat (Tanpa Simbol Apapun) : ');
readln(data[i].alamat);
writeln;
end;
end
perintah for i=1 to n do bermakna bila nilai n tadi lebih besar maka akan di
lakukan untuk variabel i dari 1 hingga masukan bernilai sama dengan
masukan pada variabel n yang tadi di masukan. Kemudian perintah di
bawahnya untuk memasukan nilai ke dalam variabel i tadi dengan alamat
pada data[i].nim yang hanya berbeda pada alamatnya saja. Ini dilakukan
terus menerus hingga masukan data ke i terpenuhi sampai nilai n yang di
masukan.
19
end
else
writeln('Input salah...')
until(n>0);
end;
Perintah di sini untuk menjadi alternatif lain apabila masukan untuk data n
lebih kecil dari 0. Maka akan di tampilkan Input salah, hingga data untuk i
terpenuhi untuk n lebih besar dari 0.
{prosedur Insertion Sort}
procedure iS(var A : aData; var ndata :
integer);
var
temp,i,j : integer;
temp2,t emp3 : string[50];
Prosedur untuk Insertion Sort menggunakan variabel A bernilai sama
dengan aData, ndata bertipe bilangan bulat serta untuk variabel tem,i,j juga
bertipe sama dengan ndata. Selanjutnya untuk temp2,dan temp3 bertipe
huruf (string).
begin
clrscr;
writeln('Input Data Insertion Sort');
writeln;
inputData(A,ndata);
{rutin kode}
for i:=2 to ndata do
perintah ini untuk memasukan input daata pada insertion sort. disini
dilakukan pemanggilan untuk prosedur input data dengan nama inputData
serta variabel yang di definisikan di dalam inputan tersebut yakni A,ndata.
Untuk masukan data apabila i bernilai 2 hingga ndata maka akan dilakukan
eksekusi perintah selanjutnya.
20
begin
temp := A[i].nim;
temp2 := A[i].nama;
temp3 :=
A[i].alamat;
Ketika nilai i terpenuhi maka temp akan bernilai pada A[i].nim ini adalah
perintah untuk memasukan nilai variabel temp ke dalam array A dengan i
variabel sebagai alamat. Ini dilakukan hingga semua untuk variabel temp2
dan temp3 hanya saja untuk temp2 dengan alamat nama, dan untuk temp3
dengan alamat “ alamat”.
j := i-1;
while ((temp<A[j].nim) and (j>=1))
do
begin
A[j+1].nim := A[j].nim;
A[j+1].nama := A[j].nama;
A[j+1].alamat := A[j].alamat;
j := j-1;
end;
Bagian ini untuk pemeriksaan pada array yang disimpan dalam variabel A
tadi hingga. Perintah j sama dengan i-1 ketika temp bernilai lebih besar
dari A array j alamat nim dan j bernilai besar atau sama dengan 1 maka
akan dilakukan penambahan untuk tiap array dengan alamat yang berbeda
dengan satu hingga nilai j sama dengan nilai j dikurang satu.
A[j+1].nim := temp;
A[j+1].nama := temp2;
A[j+1].alamat :=
temp3;
end;
21
end;
Perintah di sini untuk penukaran nilai untuk tiap array yang telahh
ditambahh satu dengan alamat yang berbeda pada tiap array. Dalam hal ini
nilai array A dengan variabel j ditambah 1 beralamat nim bernilai sama
dengan temp. begitu juga dengan temp2 dan temp3.
{prosedur Selection Sort}
procedure sS(var A : aData; var ndata :
integer);
var
i,j,pos : integer;
Pada prosedur ini variabel yang ada adalah A bernilai sama dengan adata,
ndata bernilai bilangan bulat, i, j,dan pos bernilai bilangan bulat. prosedur
ini untuk seleksi pada posisi yang akan ditentukan
begin
clrscr;
writeln('Input Data Selection
Sort');
writeln;
inputData(A,ndata);
bagian ini untuk memanggil penginputan data. dengan variabel –
variabelnya.
for i:=1 to ndata-1 do
begin
pos := i;
for j:=i+1 to ndata do
if (A[pos].nim > A[j].nim)
then
pos := j;
if (pos<>i) then
tukar(pos,i);
22
end;
end;
Apabila nilai i sama dengan satu ke ndata minus 1 maka akan dilakukan
proses eksekusi perintah selanjutnya.
Perintah pos bernilai sama dengan variabel i. Maka jika j bernilai sma
dengan i ditambahkan satu hingga ndata akan dilakukan perbandingan
array A[pos] beralamat nim lebih besar dari array A[j] beralamat nim
hingga pos bernilai sama dengan j.
Kemudian jika pos berada pada posisi tidak lebih kecil atau lebih besar
dari variabel i maka akan dipanggil prosedur untuk penukaran data
dengan variabel yang telah diganti.
prosedur Bubble Sort}
procedure bS(var A : aData; var ndata :
integer);
var
i,j : integer;
Prosedur ini untuk pengurutan data dengan metode buble sort dengan
variabel yang sama dengan selection sort hanya saja tidak ada penambahan
variabel pos di dalam prosedur ini.
begin
clrscr;
writeln('Input Data Bubble
Sort');
writeln;
inputData(A,ndata);
Bagian ini untuk pemanggilan prosedur input data, yang berbeda hanya
penampilan dalam layar di tampilkan Input data bubble sort.
{rutin kode}
for i:=1 to ndata-1 do
23
for j:=ndata downto i+1 do
if (A[j].nim < A[j-1].nim)
then
tukar(j,(j-1));
end;
Di sini perintah untuk variabel i jika bernilai 1 hingga ndata minus 1 dan
untuk j sama dengan ndata menggunakan perintah turun hingga variabel i
ditambahkan 1 maka dilakukan perbandingan array A[j]beralamat nim
lebih kecil dari array A[j-1] beralamt nim dan akan di lakukan prosedur
untuk pemanggilan prosedur tukar data dengan variabel pada buble sort
yakni j, dengan j dikurang 1.
{prosedur tampil data yang terurut Descending}
procedure showUrut2(A : aData; var ndata :
integer);
var
i : integer;
Di sini prosedur untuk penampilan data secara Ascending variabelnya
adalah A bernilai sama dengan aData dan ndata bertipe bilangan bulat
(integer). Serta variabel i dengan tipe bilangan bulat juga.
begin
clrscr;
writeln('Tampilan Data Terurut');
writeln;
for i:=1 to ndata do
Pada perintah ini jika variabel i bernilai 1 hingga ndata maka akan
perintah eksekusi selanjutnya dijalankan.
begin
writeln('NIM : ',A[i].nim);
writeln('Nama : ',A[i].nama);
24
writeln('Alamat :
',A[i].alamat);
writeln;
end;
end;
perintah ini apabila nilai i telah memnuhi. maka akan dilakukan
penampilan data secara urut naik akibat perintah for i:=1 to ndata do
maka akan di tampilkan nim, nama, dan alamat yang telah di urutkan dari
array A dengan variabel i secara urut naik.
{prosedur tampil data yang terurut Descending}
procedure showUrut2(A : aData; var ndata :
integer);
var
i : integer;
Prosedur untuk urut turun yang berbeda hanyalah pemangilan nama untuk
prosedurnya saja (di tambahkan 2 di bagian akhir ShowUrut) variabelnya
sama dengan penampilan urut naik.
begin
clrscr;
writeln('Tampilan Data Terurut 2');
writeln;
for i:=ndata downto 1 do
Tidak ada perbedaaan mencolok antara urut naik dan urut bawah
perbedaannya hanya pada perintah untuk urut naik yaitu for i:=1 to
ndata do sedangkan untuk urut turun menggunakan for i:=ndata downto
1 do untuk menurunkan nilai dalam variabel array.
begin
writeln('NIM : ',A[i].nim);
writeln('Nama : ',A[i].nama);
25
writeln('Alamat :
',A[i].alamat);
writeln;
end;
end;
perintah untuk menampilkan arrayA dengan variabel i pada alamat
nim,nama, dan alamat secara urut turun.
{program utama}
begin
repeat
plh := menu;
case plh of
'1' : iS(data,x);
'2' : sS(data,x);
'3' : bS(data,x);
'4' : exit;
end;
Perintah untuk memulai program utama. Di dalamnya perintah perulangan
untuk masukan pilihan menu, juga ada pemanggilan perintah plh :=
menu; yang akan membuat plh memanggil fungsi menu anggota dari plh
dengan pemanggilan pada tiap masukan pada pilihan misalannya apabila
di masukan angka satu akan dipanggil prosedur iS (insertion Sort) dengan
variabel data dan x. Untuk no 4 pilihan keluar perintah ini untuk keluar
dari program tanpa eksekusi perintah lain dibawahnya.
writeln;
writeln('pilih tampilan');
writeln('1:Ascending');
writeln('2:Descending');
writeln('0:Keluar Program ');
pt := readkey;
26
if not (pt in ['1','2','0']) then
writeln(' >> Pilihan salah...')
else if (pt in ['0']) then
exit;
case pt of
'1':showUrut(data,x);
'2':showUrut2(data,x);
end;
perintah ini untuk memilih penampilan pada data yan telah terurut dengan urut
naik atau turun. Dengan variabel pt sebagai pembacaan masukan piranti. Perintah
if not (pt in ['1','2','0']) then
writeln(' >> Pilihan salah...')
dalam hal ini jika pt masukan lain dari 1,2, dan 3 maka akan ada pemberitahuan
perintah salah.
else if (pt in ['0']) then
exit;
Perintah ini apabila masukan adalah 0 maka akan di eksekusi perintah edit
( langsung keluar dari program).
case pt of
'1':showUrut(data,x);
'2':showUrut2(data,x);
end;
Perintah ini untuk masukan 1 dan 2 apabila masukan nya adalah 1 maka
pemanggilan prosedur urut naik akan dipanggil. Apabila masukannya adalah 2
maka akan dipanggil urut turun.
writeln('Tekan sembarang karakter untuk berikutnya...');
repeat
27
writeln('Tekan >> 1: Kembali ke Menu, 0: Keluar
Program');
ch := readkey;
if not (ch in ['1','0']) then
writeln(' >> Pilihan salah...');
Bagian ini untuk mengembalikan program ke menu awal dan juga untuk keluar
program. Untuk masukan pada pilihan ini di baca dengan variabel ch.
if not (ch in ['1','0']) then
writeln(' >> Pilihan salah...');
Jika pilihan masukan tidak dalam 1 dan 0 maka akan ada pemberitahuan pilihan
salah.
until(ch in ['1','0']);
until(ch = '0');
end.
Sebagai pengakhir perintah repeat untuk variabel masukan ch dan juga pabila
inputan masuk adalah 0 perintah end. akan di eksekusi sehingga akan keluar dari
program.
28
BAB IV
KESIMPULAN
Pengurutan data (sorting) didefinisikan sebagai suatu proses untuk
menyusun kembali himpunan obyek menggunakan aturan tertentu.
Menurut 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 .
Urut turun (descending) yaitu data yang mempunyai nilai paling besar
sampai paling kecil.
29
Contoh : data bilangan 5, 2, 6 dan 4 dapat diurutkan naik menjadi 2, 4, 5, 6
atau diurutkan turun menjadi 6, 5, 4, 2
Keuntungan dari data yang sudah dalam keadaan adalah:
Data mudah dicari (misalnya dalam buku telepon atau kamus
bahasa),mudah untuk dibetulkan, dihapus, disisipi atau digabungkan.
Dalam keadaan terurutkan, kita mudah melakukan pengecekan apakah
ada data yang hilang.
Melakukan komppilasi program komputer jika tabel-tabel simbol harus
dibentuk
Mempercepat proses pencarian data yang harus dilakukan berulang
kali.
Beberapa faktor yang berpengaruh pada efektifitas suatu algoritma
pengurutan antara lain:
Banyak data yang diurutkan
Kapasitas pengingat apakah mampu menyimpan semua data yang
dimiliki.
BAB V
DAFTAR PUSTAKA
Dosen Teknik Informatika. 2015.MODUL PRAKTIKUM STRUKTUR
DATA.Palangkaraya:Dosen Teknik Informatika.
Insap Santosa, P., Ir.2004.Struktur Data Menggunakan TURBO PASCAL 6.0.
Yogyakarta:ANDI OFFSET.
http :// lecturer.eepis-its.edu/.../Struktur%20 Data %20.../ Data %20Structure%20-
%20Bab%206. pdf diakses 09-05-2015/21:22
http:// www.dugdugmong.co.cc/up date /.../contoh-visual-basic- pengurutan - data -
secara-selection- sort diakses 09-05-2015/21:23
30
BAB VI
LAMPIRAN
31
Untuk sorting pilihan sorting yang lain kurang lebih sama hanya berbeda kalimat
saat masukan data yakni Selection Sort Bubble Sort pada bagain kalimat atas.
32
33