STRUKTUR DATA
NAMA
: SUPRIYANDI
NIM
KELAS
:B
MODUL
: IV (Pengurutan Data)
BAB I
TUJUAN DAN LANDASAN TEORI
A. Tujuan Praktikum
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 struktur 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.
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;
If ((temp < A[i] then
Begin
A[i] + 1 := A[i];
i := i 1;
End;
i := [i + 1] := temt;
End;
End;
:= B;
:= Temp;
End;
pertukaran}
Pass := 1;
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;
Implementasinya
dari
ketiga
metode
sorting
tersebut
dilakukan
BAB II
LANGKAH KERJA
: 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.
BAB III
PEMBAHASAN
Pada Modul ini, kita disuruh membuat sebuah program untuk menampilkan
data mahasiswa dengan menggunakan tiga metode yaitu insertion sort, selection
sort dan bubble sort. Program ini menggunakan pengurutan NIM atau mahasiswa
secara ascending.
Berikut merupakan listing program :
Program Pengurutan_Data_Mahasiswa;
Uses crt;
Label a;
Const max = 100;
Type data = array [1..max] of integer;
Type mahasiswa = record
nim
:integer;
nama
:string [30];
:mhs;
:integer;
s,p,pilih,pil :integer;
z
:byte;
:integer;
temp
:integer;
temp1,temp2
:string;
Begin
For pass:=2 to n do
Begin
temp:=c[pass].nim;
temp1:=c[pass].nama;
temp2:=c[pass].alamat;
i:=pass-1;
While ((temp < c[i].nim) and (i > 1)) do
Begin
c[i+1].nim := c[i].nim;
c[i+1].nama := c[i].nama;
c[i+1].alamat := c[i].alamat;
i := i - 1;
End;
if(temp < c[i].nim)then
Begin
c[i+1].nim := c[i].nim;
c[i+1].nama := c[i].nama;
c[i+1].alamat := c[i].alamat;
i := i - 1;
End;
c[i+1].nim := temp;
c[i+1].nama := temp1;
c[i+1].alamat := temp2;
End;
End;
Procedure switch(var a,b:integer);
Var
temp:integer;
Begin
temp:=a;
a:=b;
b:=temp;
End;
:integer;
Begin
for pass:=1 to n-1 do
Begin
imin:=pass;
for i:=pass+1 to n do
if (c[imin].nim > c[i].nim) then imin:=i;
if (imin <> pass) then
switch(c[pass].nim,c[imin].nim);
End;
End;
Procedure bubblesort(var c:mhs;n:integer);
Var
pass,i:integer;
tukar:boolean;
Begin
tukar:=true;
pass:=1;
While((tukar) and (pass < n)) do
Begin
tukar := false;
for i := n downto pass+1 do
if (c[i].nim < c[i-1].nim) then
Begin
switch (c[i].nim,c[i-1].nim);
tukar := true;
End;
End;
End;
Begin
a: clrscr;
write('Banyaknya Data Mahasiswa
: ');readln(n);
writeln;
For s:=1 to n do
Begin
write('NIM Mahasiswa Ke-',s,'
: ');readln(m[s].nim);
: ');readln(m[s].alamat);
');readln(m[s].nama);
writeln;
End;
writeln;
writeln('==Pilih Metode Pengurutan==');
writeln('1. Insertion Sorting');
writeln('2. Selection Sorting');
writeln('3. Bubble Sorting');
writeln('4. Exit');
writeln;
write('Pilihan Anda (1/2/3/4) :
');readln(pil);writeln;writeln;
Case pil of
1:Begin
clrscr;
writeln('
Insertion Sorting
');
writeln;
insertsort(m,n);
for s:=1 to n do
Begin
write('NIM
: ');writeln(m[s].nim);
write('Nama
: ');writeln(m[s].nama);
write('Alamat
: ');writeln(m[s].alamat);
writeln;
End;
writeln;
End;
2:Begin
clrscr;
writeln('
Selection Sorting
');
writeln;
minsort(m,n);
for s:=1 to n do
Begin
write('NIM
: ');writeln(m[s].nim);
write('Nama
: ');writeln(m[s].nama);
write('Alamat
: ');writeln(m[s].alamat);
writeln;
End;
writeln;
End;
3:Begin
clrscr;
writeln('
Bubble Sorting
');
writeln;
bubblesort(m,n);
for s:=1 to n do
Begin
write('NIM
: ');writeln(m[s].nim);
write('Nama
: ');writeln(m[s].nama);
write('Alamat
: ');writeln(m[s].alamat);
writeln;
End;
writeln;
End;
4:Begin
writeln('Program Diakhiri..!!');
End;
else
writeln('Pilihan Anda Salah');
for s:=1 to n do Begin delay(60000);
End;
goto a;
End;
readkey;
End.
PEMBAHASAN :
Const max = 100;
Type data = array [1..max] of integer;
Type mahasiswa = record
nim
:integer;
nama
:string [30];
Const Max Adalah untuk menetapkan variabel baru dengan panjang karakter
100 (yang berarti bernilai konstan).
Pada tipe data terdapat fungsi array. Fungsi ini adalah fungsi atau tipe data
terstruktur yang merupakan kumpulan data yang bertipe sejenis. MAX pada
array merupakan penentuan jumlah maksimum suatu karakter inputan data
yang dapat diterima. Apabila data yang dimasukan melebihi jumlah karakter
yang ditentukan sebelumnya, maka program akan mengalami error.
Pada bagian Type Mahasiswa, merupakan tempat untuk menentukan type yang
akan kita gunakan. Sama seperti halnya pada penentuan variable. Untuk nim
mahasiswa yang kita tentukan, tipe data yang kita pakai adalah string, karena
untuk nim kita terdiri dari karakter huruf dan angka. Untuk jumlah karakter
pada nim dibuat terbatas yaitu hanya sebanyak 30 karakter inputan saja dan
pada alamat 50 karakter.
Var
m
:mhs;
:integer;
s,p,pilih,pil :integer;
z
:byte;
Bagian ini merupakan penentuan variable global yang akan berpengaruh pada
keseluruhan program selain variable yang terdapat pada masing-masing
procedure. Tipe data yang digunakan masing-masing adalah mhs, integer, dan
byte.
Procedure insertsort(var c:mhs;n:integer);
Var
pass,i
:integer;
temp
:integer;
temp1,temp2
:string;
Begin
For pass:=2 to n do
Begin
temp:=c[pass].nim;
temp1:=c[pass].nama;
temp2:=c[pass].alamat;
i:=pass-1;
While ((temp < c[i].nim) and (i > 1)) do
Begin
c[i+1].nim := c[i].nim;
c[i+1].nama := c[i].nama;
c[i+1].alamat := c[i].alamat;
i := i - 1;
End;
if(temp < c[i].nim)then
Begin
c[i+1].nim := c[i].nim;
c[i+1].nama := c[i].nama;
c[i+1].alamat := c[i].alamat;
i := i - 1;
End;
c[i+1].nim := temp;
c[i+1].nama := temp1;
c[i+1].alamat := temp2;
End;
End;
Pada coding diatas kita menggunakan metode insertion sort, yaitu memilah data
yang akan diurutkan menjadi dua bagian, yang belum diurutkan (pertama), dan
yang telah diurutkan (kedua). Elemen pertama yang diambil dari bagian array
yang belum diurutkan dan kemudian diletakkan pada posisinya sesuai dengan
bagian lain dari array yang telah diurutkan. langkah ini dilakukan secara
berulang hingga tidak ada lagi elemen yang tersisa pada bagian array yang
belum diurutkan.
Metode ini mengurutkan data-data yang telah dibaca dan berikutnya secara
berulang akan menyisipkan data-data dalam array yang belum terbaca ke sisi
kiri array yang telah terurut.
Insertion Sort merupakan algoritma yang efisien untuk mengurutkan yang
mempunyai jumlah elemen sedikit.
Procedure switch(var a,b:integer);
Var
temp:integer;
Begin
temp:=a;
a:=b;
b:=temp;
End;
Procedure minsort(var c:mhs;n:integer);
Var
pass,i:integer;
imin
:integer;
Begin
for pass:=1 to n-1 do
Begin
imin:=pass;
for i:=pass+1 to n do
if (c[imin].nim > c[i].nim) then imin:=i;
if (imin <> pass) then
switch(c[pass].nim,c[imin].nim);
End;
End;
End;
End;
End;
Pada coding di atas kita menggunakan metode pengurutan bubble sort, yaitu
metode untuk meletakkan nilai pada posisi ke-i dengan menggelembungkan
atau mengangkat nilai minimum dari i+1 sampai dengan N.
Metode bubble sort adalah metode yang mendasarkan penukaran dua buah
elemen untuk mencapai keadaan urut. Metode ini adalah yang termudah, tetapi
paling tidak efisien.
Begin
tukar:=true;
pass:=1;
While((tukar) and (pass < n)) do
Begin
tukar := false;
for i := n downto pass+1 do
if (c[i].nim < c[i-1].nim) then
Begin
switch (c[i].nim,c[i-1].nim);
tukar := true;
End;
End;
End;
Dari potongan listing bubble sort di atas jika tukar = true, maka data tersebut =
1, dan jika tukar = false, maka data tersebut akan ditambah dengan angka 1.
Pada prosedur ini juga ada pemanggilan untuk prosedur switch switch
(c[i].nim,c[i-1].nim);.
Case pil of
1:Begin
clrscr;
writeln('
Insertion Sorting
');
writeln;
insertsort(m,n);
for s:=1 to n do
Begin
write('NIM
: ');writeln(m[s].nim);
write('Nama
: ');writeln(m[s].nama);
write('Alamat
: ');writeln(m[s].alamat);
writeln;
End;
writeln;
End;
2:Begin
clrscr;
writeln('
Selection Sorting
');
writeln;
minsort(m,n);
for s:=1 to n do
Begin
write('NIM
: ');writeln(m[s].nim);
write('Nama
: ');writeln(m[s].nama);
write('Alamat
: ');writeln(m[s].alamat);
writeln;
End;
writeln;
End;
3:Begin
clrscr;
writeln('
Bubble Sorting
writeln;
bubblesort(m,n);
for s:=1 to n do
');
Begin
write('NIM
: ');writeln(m[s].nim);
write('Nama
: ');writeln(m[s].nama);
write('Alamat
: ');writeln(m[s].alamat);
writeln;
End;
writeln;
End;
4:Begin
writeln('Program Diakhiri..!!');
End;
else
writeln('Pilihan Anda Salah');
for s:=1 to n do Begin delay(60000);
End;
goto a;
End;
readkey;
End.
Listing program di atas adalah statemen Case Of , bagian ini merupakan bagian
untuk pendeklarasian secara ascending. Setelah kita memilih palihan kita pada
menu tadi kemudian kita akan diminta memilih Insertion Sort, Selection Sort,
dan Bubble Sort. Disini dilakukan pemanggilan-pemanggilan prosedurprosedur yang telah dideklarasi sebelumnya.
BAB IV
KESIMPULAN
Metode pengurutan data yang digunakan pada praktikum ini mencakup tiga metode
pengurutan data, yaitu :
1.
2.
3.
BAB V
DAFTAR ISI
BAB VI
LAMPIRAN
Coding :