Anda di halaman 1dari 13

LAPORAN HASIL PRAKTIKUM

STRUKTUR DATA

NAMA : DHEA KRISTINA


NIM : 203010503008
KELAS :C
MODUL : V (PENGURUTAN(SORTING))

JURUSAN TEKNIK INFORMATIKA


FAKULTAS TEKNIK
UNIVERSITAS PALANGKARAYA
2021
BAB I
PENDAHULUAN

1.1 TUJUAN
1. Mahasiswa memahami bagaimana logika yang digunakan dalam setiap
jenis-jenis sorting.
2. Mahasiswa mampu menerapkan algoritma sorting ke dalam program.

1.2 LANDASAN TEORI


Algoritma pengurutan adalah metode yang dibutuhkan untuk
mengurutkan data. Data yang diurutkan dapat berupa tipe dasar atau bertipe
tersturktur (struct). Jika data bertipe terstruktur, maka harus dispesifikasikan
berdasarkan field apa data tersebut diurutkan. Terdapat banyak algoritma
yang digunakan untuk mengurutkan data. Setiap algoritma mempunyai
kekuatan dan kelemahan. Pada banyak cara pemecahan masalah, teknik
terbaik untuk menggunakan algoritma pengurutan adalah dengan
membangun algoritma pengurutan dalam bentuk fungsi. Jenis algoritma
pengurutan yang dibahas pada modul ini adalah algoritma buble sort,
selection sort, shell short, dan insertion sort.
1. Buble Sort
Algoritma pengurutan Apung akan membandingkan elemen yang
sekarang dengan elemen berikutnya, pada pengurutan ascending jika
nilai elemen sekarang > elemen berikutnya, maka dilakukan proses
penukaran. Misalkan terdapat L larik yang tiap indeksnya k berisi data
belum terurut dengan jumlah elemen n, maka untuk mendapatkan larik
yang terurut ascending, algoritmanya secara umum seperti berikut.
Procedure Buble_sort ( Larik[] array of integer, n > integer )
Begin
For i=1 to n do
For j=1+i to n do
if data[i]>data[j] swap(data[i],data[j])
end.
2. Selection Sort
Ide dasar pengurutan Seleksi adalah memilih elemen
maksimum/minimum dari larik lalu menempatkan elemen
maksimum/minimum. itu pada awal atau akhir larik. Selanjutnya elemen
awal/akhir tersebut “diisolasi” dan tidak disertakan dalam proses
perbandingan selanjutnya. Seperti pada algoritma pengurutan Apung,
proses memilih nilai maksimum/minimum dilakukan pada setiap pass.
Jika larik berukuran n, maka jumlah pass adalah n-1. Algoritma
pengurutan Seleksi untuk mendapatkan larik yang terurut ascending,
secara umum seperti berikut.
Procedure Selection_Sort (Larik[] array of integer, n > integer)
Begin
For i=1 to n do
Temp = i;
For j=i+1 to n do
If data[j]<data[Temp]
Temp;
Swap(data[j], data[Temp]
End.

3. Insertion Sort
Inspirasi dari algoritma pengurutan Sisip adalah seperti ketika
mengurutkan kartu pada permainan kartu. Metode pengurutan dengan
cara menyisipkan elemen larik pada posisi yang tepat. Pencarian posisi
yang tepat dilakukan dengan menyisir larik. Selama penyisiran
dilakukan pergeseran elemen larik. Algoritma pengurutan Sisip untuk
mendapatkan larik yang terurut ascending, secara umum seperti berikut.
Untuk setiap pass i=2, ..., n lakukan:
1. y = L[i]
2. Sisipkan y pada tempat yang sesuai di antara L[1]...L[i].
4. Shell Short
Pada algoritma pengurutan Shell jarak antar dua elemen yang
dibandingkan dan ditukarkan. Langkah pertama, ambil elemen pertama
dan bandingkan dengan elemen pada jarak tertentu dari elemen pertama
tersebut. Kemudian elemen kedua dibandingkan dengan elemen lain
dengan jarak yang sama seperti diatasnya. Demikian seterusnya sampai
seluruh elemen dibandingkan. Pada pass berikutnya proses diulang
dengan langkah yang lebih kecil, hingga proses dihentikan jika jarak
sudah sama dengan satu. Secara umum, algoritma pengurutan Shell
dituliskan sebagai berikut.
1. Step = n {n = ukuran larik}
2. While Step > 1 do
a. Step = Step div 3 +1
b. For i=1 to Step do
Insertion Sort setiap elemen ke-Step mulai dari elemen ke-i.
BAB II
PEMBAHASAN

1. Algoritma pengurutan Shell sort

Gambar 2.1 (Input program shell sort)


Program kali ini adalah program pengurutan shell sort. Pengurutan shell
sort adalah metode yang mengurutkan data dengan cara membandingkan
suatu data dengan data lain yang memiliki jarak tertentu. pada program ini
menggunakan header “iostream”, "iostream" merupakan file program yang
mengandung deklarasi kelas-kelas yang diperlukan dan conio.h yang
berfungsi untuk menampilkan hasil antarmuka.
. Kemudian dilanjutkan dengan “using namespace std;”, using
namesapce std menyatakan bahwa program di atas akan menggunakan
namespace yang bernama std, sehingga tidak perlu menyertakan identitas std:
pada anggota dari namespace std salah satunya adalah cout.
Kemudian pada baris selanjutnya bagian utama program “int main”. Lalu
selanjutnya adalah pendeklarasian variabel, yaitu variabel i, n, t dan val
bertipe integer dan val yang dapat menampung nilai sampai 100. Kemudian
cout<<"Masukkan jumlah data yang ingin diurutkan : ";cin>>n; kemudian
dilanjutkan dengan struktur perulangan for dimana i = 0; i < n; i++ apabila
kondisi terpenuhi maka akan dieksekusi. Kemudian cout<<"Nilai ke-
"<<1+i<<" : ";cin>>val[i]; yaitu melakukan inputan nilai yang akan di
urutkan. Kemudian adalah fungsi dari shell short dan yang terakhir yaitu
fungsi output dari program shell sort.
Berikut adalah output dari program shell sort :

Gambar 2.2 (Output Program Shell Sort)


Prinsip Shell Sort :
1) Data pertama (i=0) dibandingkan dengan data dengan jarak (N/2)+1.
Apabila data pertama lebih besar dari data ke (N/2)+1) tersebut maka
kedua data tersebut ditukar.
2) Kemudian data kedua (i=1) dibandingkan dengan jarak yang sama
yaitu (N/2)+1) = elemen ke-(i+N/2)+1
3) Demikian seterusnya sampai seluruh data dibandingkan sehingga
semua data ke-i selalu lebih kecil dari pada data ke-(i+N/2)+1
4) Ulangi langkah-langkah diatas untuk jarak = (N/4)+1 kemudian
lakukan pembandingan dan pengurutan sehingga semua data ke-i
lebih kecil daripada data ke-(i+N/4)+1
5) Ulangi langakah-langkah diatas untuk jarak = (N/8)+1 kemudian
lakukan pembandingan dan pengurutan sehingga semua data ke-i
lebih kecil daripada data ke-(i+N/8)+1
6) Demikian seterusnya sampai jarak yang digunakan adalah 1 atau data
sudah terurut

2. Algoritma pengurutan Selection sort

Gambar 2.3 (Input Program Selection Sort)


Program kali ini adalah program pengurutan selection sort. Pada
program ini menggunakan header “iostream”, "iostream" merupakan file
program yang mengandung deklarasi kelas-kelas yang diperlukan. Kemudian
dilanjutkan dengan “using namespace std;”, using namesapce std menyatakan
bahwa program di atas akan menggunakan namespace yang bernama std,
sehingga tidak perlu menyertakan identitas std: pada anggota dari namespace
std salah satunya adalah cout.
Kemudian pada baris selanjutnya bagian utama program “int main”. Lalu
selanjutnya adalah pendeklarasian variabel, yaitu variabel ndan tukar bertipe
integer dan tukar yang dapat menampung nilai sampai 100. Kemudian
cout<<"Masukkan jumlah data: ";cin>>n; kemudian dilanjutkan dengan
struktur perulangan for dimana i = 0; i < n; i++ apabila kondisi terpenuhi
maka akan dieksekusi. Kemudian cout<<"Data ke-"<<1+i<<" : ";cin>>val[i];
yaitu melakukan inputan nilai yang akan di urutkan. Kemudian adalah fungsi
dari selection sort dan yang terakhir yaitu fungsi output dari program
selection sort.
Berikut adalah output dari program shell sort :

Gambar 2.2 (Output Program Selection Sort)


Prinsip Selection sort :
1) Pengecekan mulai dari data ke-1 sampai data ke-n
2) Bandingkan data ke-n dengan data sebelumnya (n-1)
3) Jika lebih kecil maka pindahkan bilangan tersebut dengan bilangan yg
ada didepannya ( sebelumnya ) satu persatu (n-1,n-2,n-3,....dst)
4) Jika lebih besar maka tidak terjadi pemindahan
5) Ulangi langkah 2 dan 3 s/d sort optimal.
DAFTAR PUSTAKA

Modul Praktikum Sturktur Data Universitas Palangkaraya.

Nugasshare, Codingan C++ Algoritma Sorting Bubble Sort, Insertion Sort,


Selection Sort, Merge Sort, Quick Sort
https://nugashare.blogspot.com/2015/01/codingan-c-algoritma-
sorting.html#.YIZm0pAzY2w Diakses Pada 26 April 2021 Pukul 14.30
WIB.

Markijar 3 April 2015, Contoh Program Shell Sort Bahasa C


http://www.markijar.com/2015/04/contoh-program-shell-sort-c.html
Diakses Pada 26 April 2021 Pukul 15.00 WIB.
LAMPIRAN

Gambar 1
Gambar 2

Gambar 4
Gambar 4