Anda di halaman 1dari 20

MINI RISET & REKAYASA IDE

MK. STRUKTUR DATA


PENDIDIKAN
PRODI S1-PTIK - FT

Skor Nilai :

Tree Sort And Partition Sort

NAMA MAHASISWA :
Dimas Vio Karim NIM : 5183151015
Aulia Oktaviani NIM : 5183151025
Aswar Nasution NIM : 5183351026
Ester Simanjuntak NIM : 5183351030

DOSEN PENGAMPU : MARTIANO, S.PD., M.KOM


MATA KULIAH : STRUKTUR DATA

PROGRAM STUDI S1 PENDIDIKAN TEKNOLOGI


INFORMATIKA DAN KOMPUTER
FAKULTAS TEKNIK - UNIVERSITAS NEGERI MEDAN
APRIL 2019
KATA PENGANTAR

Puji dan syukur kami panjatkan ke hadirat Tuhan Yang Maha Esa karena berkat
limpahan rahmat dan karunia-Nya sehingga kami dapat menyelesaikan tugas Mini Riset dan
Rekayasa Ide ini tepat pada waktunya. Penyusunan tugas Mini Riset dan Rekayasa Ide ini
disusun untuk memenuhi tugas yang didalamnya akan mengkaji materi tentang Struktur Data.

Dalam penyusunan tugas Mini Riset dan Rekayasa Ide ini, Kami banyak mendapat
hambatan akan tetapi dengan bantuan dari berbagai pihak hambatan itu bisa teratasi. Olehnya
itu, Kami mengucapkan terima kasih yang sebesar-besarnya kepada semua pihak yang telah
membantu dalam penyusunan Mini Riset dan Rekayasa Ide ini, semoga bantuannya mendapat
balasan yang setimpal dari Tuhan Yang Maha Esa.

Kami menyadari bahwa Mini Riset dan Rekayasa Ide ini masih jauh dari
kesempurnaan baik dari bentuk penyusunan maupun materinya. Kritik dan saran dari
pembaca sangat Kami harapkan untuk penyempurnaan Mini Riset dan Rekayasa Ide
selanjutnya. Untuk itu Kami mengucapkan terima kasih dan semoga Mini Riset dan Rekayasa
Ide ini dapat bermanfaat bagi kita semua.

Medan, April 2019

Tim Penyusun

i
ORGANISASI TEAM

Ester Simanjuntak Pembaca materi tree sort

Aulia Oktaviani Menjelaskan contoh tree sort

Aswar nasution Pembaca materi Partition sort

Dimas Vio Karim Menjelaskan contoh Partition sort

ii
DAFTAR ISI

KATA PENGANTAR ...........................................................................................................i


ORGANISASI TEAM ...........................................................................................................ii
DAFTAR ISI.......................................................................................................................... iii
BAB I PENDAHULUAN
1.1. Latar Belakang Masalah .............................................................................................. 1
1.2. Rumusan Masalah .......................................................................................................2
1.3. Tujuan Penelitian .........................................................................................................2
1.4. Manfaat Penelitian .......................................................................................................2
BAB II PEMBAHASAN
2.1. Kajian Teori ...............................................................................................................3
BAB III
3.1. Deskripsi Alur ............................................................................................................ 5
3.2. Implementasi Algoritma............................................................................................. 9
3.3. Design Protipe ............................................................................................................13
3.4. Video Pembelajaran ...................................................................................................14
BAB IV
4.2. Kesimpulan ................................................................................................................15
4.3. Saran ........................................................................................................................... 15
DAFTAR PUSTAKA ...........................................................................................................16

iii
BAB I
PENDAHULUAN

1.1. Latar Belakang Masalah


Sorting merupakan suatu proses untuk menyusun kembali humpunan obyek
menggunakan aturan tertentu. Sorting disebut juga sebagai suatu algoritma untuk
meletakkan kumpulan elemen data kedalam urutan tertentu berdasarkan satu atau
beberapa kunci dalam tiap-tiap elemen. Pada dasarnya ada dua macam urutan yang
biasa digunakan dalam suatu proses sorting yaitu Urut naik (ascending) Mengurutkan
dari data yang mempunyai nilai paling kecil sampai paling besar dan Urut turun
(descending) Mengurutkan dari data yang mempunyai nilai paling besar sampai paling
kecil.
Banyak alasan dan keuntungan dengan mengurutkan data. Data yang terurut
mudah untuk dicari, mudah untuk diperiksa, dan mudah untuk diperbaiki jika terdapat
kesalahan. Data yang terurut dengan baik juga mudah untuk dihapus jika sewaktu-
waktu data tersebut tidak diperlukan lagi. Selain itu, dengan mengurutkan data maka
kita semakin mudah untuk menyisipkan data atapun melakukan penggabungan data.
Dalam sorting terdapat enam metode utama yaitu meliputi Insertion Sort (Metode
Penyisipan), Selection Sort (Metode Seleksi), Bubble sort(Metode Gelembung), Shell
Sort (Metode Shell), Quick Sort (Metode Quick) dan Merge Sort (Metode
Penggabungan). Namun pada laporan Miniriset dan Rekayasa Ide kali ini kami akan
membahas metode sorting Tree Sort And Partition Sort.

1
1.2. Rumusan Masalah
Dalam Penulisan Laporan Mini Riset dan Rekayasa Ide ini maka didapat rumusan
masalah sebagai berikut :
1. Bagaimana Efisiensi Algoritma Tree Sort dan Partition Sort ?
2. Bagaimana Proses Algoritma Tree sort dan Partition Sort ?
3. Serta Bagaimana Hasil Algoritma Tree Sort dan Partition Sort ?

1.3. Tujuan Penelitian


Dalam Penulisan Laporan Mini Riset dan Rekayasa Ide ini maka didapat Tujuan
Penelitian sebagai berikut :
1. Untuk mengetahui Proses Algoritma dari Tree Sort dan Partition sort.
2. Untuk mengetahui Seberapa efisiensinya Algoritma Tree sort dan Partition Sort

1.4. Manfaat Penelitian


Manfaat dari dibuatnya laporan penelitian ini yaitu sebagai berikut :
1. Untuk Mahasiswa laporan ini bermanfaat untuk menambah wawasan tentang
Algoritma Tree Sort dan Partition sort serta sebagai salah satu bentuk
penyelesaian tugas matakuliah Struktur Data.
2. Selain itu tugas laporan ini juga Melatih kemampuan mahasiswa dalam meneliti
suatu materi dalam pembelajaran serta Menumbuhkan pola pikir kreatif dalam
menanggapi suatu topik materi dalam pembelajaran.
3. Hasil Laporan ini diharapkan dapat menjadi masukan bagi masyarakat agar dapat
menggunakan dan menerapkan metode Tree Sort dan Partition sort.

2
BAB II
PEMBAHASAN
2.1 Kajian Teori
A. Tree Sort
Tree sort adalah metode sorting dengan cara membangun pohon biner
dengan menampilkan 3 hasil output yaitu berupa PreOrder, InOrder, PostOrder.
Konsep dasar dari tree sort adalah sebagaimana sebuah pohon, ada akar, batang,
ranting, daun, dan sebagainya. Dalam tree sort ada istilah akar atau root dan
daun atau leaf. Perhatikan gambar di bawah ini :

ketentuan dari gambar diatas adalah :


 1 menjadi akar ,
 2 menjadi subtree kiri,
 3 menjadi subtree kanan,
 4 & 5 menjadi daun dari subtree kiri ,
 6 menjadi daun dari subtree kanan.

3
B. Partition Sort
Partition exchange sort atau Partition Short merupakan nama lain dari Quick
Sort yang merupakan suatu algoritma pengurutan data yang menggunakan teknik
pemecahan data menjadi partisi-partisi. Algoritma quicksort diperkenalkan pertama
kali oleh C.A.R. Hoare pada tahun 1960. Bentuknya yang sederhana, efisien dan
efektif dengan cepat membuatnya menjadi algoritma pengurutan (sorting) yang
paling banyak digunakan, terutama dalam bahasa pemrograman.
Untuk memulai irterasi pengurutan, pertama-tama sebuah elemen dipilih dari
data, kemudian elemen-elemen data akan diurutkan diatur sedemikian rupa.
Algoritma ini mengambil salah satu elemen secara acak (biasanya dari tengah) yang
disebut dengan pivot lalu menyimpan semua elemen yang lebih kecil di sebelah kiri
pivot dan semua elemen yang lebih besar di sebelah kanan pivot. Hal ini dilakukan
secara terus menerus terhadap elemen di sebelah kiri dan kanannya sampai semua
elemen sudah terurut.

4
BAB III

IMPLEMENTASI

3.1. Deskripsi Alur


Pada laporan ini kami akan membuat program pencarian data dengan
menggunakan Tree sort dan Partition sort dengan menggunakan bahasa Pemograman C.
Yang pertama kita akan membahas terlebih dahulu alur Tree sort yang merupakan
sebuah pohon biner yang didalamnya memiliki operasi traversal yaitu suatu kunjungan
pada suatu simpul tepat satu kali. Dengan melakukan kunjungan lengkap kita akan
memperoleh urutan informasi secara linier yang tersinpan di dalam pohon biner.
Terdapat tiga jenis kunjungan pada pohon biner, yaitu :
a. Preorder
Kunjungan jenis ini mempunyai urutan kunjungan sebagai berikut :
– Cetak isi simpul yang dikunjungi.
– Kunjungi cabang kiri.
– Kunjungi cabang kanan.

Prosedur untuk melakukan traversal secara PREORDER adalah sebagai


berikut:

5
b. Inorder
Kunjungan jenis ini mempunyai urutan kunjungan sebagai berikut :
– Kunjungi cabang kiri.
– Cetak isi simpul yang dikunjungi.
– Kunjungi cabang kanan.

Prosedur untuk melakukan traversal secara INORDER adalah sebagai


berikut:

c. Postorder
Kunjungan jenis ini mempunyai urutan kunjungan sebagai berikut :
– Kunjungi cabang kiri.
– Kunjungi cabang kanan.
– Cetak isi simpul yang dikunjungi.

6
Prosedur untuk melakukan traversal secara POSTORDER adalah sebagai berikut :

Dalam menentukan Tree Sort berlaku rumus seperti berikut :


– Jika nilai Root lebih kecil dari A maka A disimpan di kiri
– Jika nilai Root lebih besar dari A maka A disimpan di kanan
Sebagai contoh misalkan terdapat angka 2 0 4 6 8 maka jika diurutkan dengan
menggunakan metode tree sort akan menghasilkan :
Preorder :20468
Inorder :02468
Postorde :08642

Selanjutnya kita akan membahas alur partition sort dan berikut merupakan Algoritma
dari metode Partition Sort / Quick Sort.
 Pilih satu elemen secara acak sebagai pivot
 Pindahkan semua elemen yang lebih kecil ke sebelah kiri pivot dan semua
elemen yang lebih besar ke sebelah kanan pivot.
 Elemen yang nilainya sama bisa disimpan di salah satunya.
 Lakukan sort secara terus menerus terhadap sub-array sebelah kiri dan kanan
pivot.

Sebagai contoh misalkan terdapat angka 9 4 2 7 10 1 5 maka jika diurutkan dengan


menggunakan metode partition sort / quick sort :
 langkah pertama adalah tentukan pivotnya. Misal kita menggunakan angka 7
sebagai pivot.
 kemudian kita buat partisi kanan dan kiri
 kemudian gunakan algoritma quicksort yang ada diatas, jika angka lebih kecil
dari pivot maka akan diletakan sebelah kiri dan jika lebih besar maka letakan
disebelah kanan. langkah pertama adalah bandingkan angka 9 dengan pivot

7
apakah lebih kecil atau lebih besar. karena angka 9 lebih besar maka letakan
angka 9 setelah pivot atau di partisi sebelah kanan pivot.
 lanjut ke angka 4 bandingkan angka 4 dengan pivot, karena angka 4 lebih kecil
dari 7 maka posisi tetap.
 lanjut ke angka 2. cek apakah angka 2 lebih kecil atau lebih besar dari pivot,
karena angka 2 lebih kecil dari pivot maka letaknya tetap
 bandingkan pivot dengan angka 10. cek angka 10 ebih besar atau lebih kecil dari
pivot, karena angka 10 lebih besar maka posisi tetap sebelah kanan
 lanjut ke angka 1. cek angka 1 lebih kecil atau lebih besar dari pivot, karena
lebih kecil maka pindah ke sebelah kiri pivot.
 lanjut ke angka 5. cek apakah angka 5 lebih kecil atau lebih besar dari angka
pivot, karena angka 5 lebih kecil maka pindah ke sebelah kiri pivot.
 setelah itu masuk ke dalam partisi baru. sampai sini proses belum selesai.
tentukan pivot untuk masing-masing partisi perbandingan untuk pivot pertama.
angka 2. cek apakah angka 2 lebih kecil atau lebih besar dari pivot. karena
angka 2 lebih kecil dari pivot maka pindahkan ke kiri pivot.
 lanjut ke angka 1. cek apakah angka lebih besar atau lebih kecil dari pivot,
karena angka 1 lebih kecil maka pindahkan disebelah kiri angka pivot.
 lanjut ke angka 5. cek apakah angkanya lebih besar atau lebih kecil dari pivot,
karena lebih besar maka posisinya tetap. untuk partisi pertama selesai
 ulangi langkah2 seperti sebelumnya untuk pivot partisi ke 2. dan hasil akhir dari
quick sort ini adalah seperti ini : 1 2 4 5 7 9 10
Contoh :

8
3.2. Implementasi Algoritma
A. Berikut Merupakan Implementasi Algoritma dari Tree Sort
#include "iostream"
#include "conio.h"
using namespace std;

struct Node {
int item; //variabel item
Node *kiri; //pointer ke subtree kiri
Node *kanan; //pointer ke subtree kanan
};

void tambah(Node **akar,int itembaru) //berisi pointer yang menunjuk ke


pointer akar itu sendiri
{
if((*akar) == NULL) //jika akar kosong maka membuat item baru
{
Node *baru; //pointer baru
baru = new Node; //new node = alamat baru
baru->item = itembaru; //baru di tunjuk oleh pointer item & di isi
dengan item baru
baru->kiri = NULL; //baru ditunjuk dengan pointer kiri ,dan jika
masihh kosong
baru->kanan = NULL; //baru ditunjuk dengan pointer kanan & jika kosong
(*akar) = baru; //pointer akar = variabel baru dengan alamat baru
(*akar)->kiri = NULL;
(*akar)->kanan = NULL;
cout<<"Item bertambah!";
}
else if(itembaru < (*akar)->item) tambah(&(*akar)->kiri,itembaru);
// jika item yang ditambah di kiri
else if(itembaru > (*akar)->item) tambah(&(*akar)->kanan,itembaru);
//jika item yang ditambah item ke kanan
else if(itembaru == (*akar)->item) //jika item yang di input sama dengan
item yang ditambah sebelumnya
cout<<"Item sudah ada!";
}
void tampil(Node *akar) //fungsi menampilkan seluruh item yang telah di
imput
{
if(akar != NULL){
cout<<akar->item<<" ";
tampil(akar->kiri), //rekursif dengan fungsi tampil dengan mengarah ke
kanan
tampil(akar->kanan); //rekursif dengan fungsi tampil dengan mengarah ke
kanan
}}

void preOrder(Node *akar) //fungsi cetak preOrder


{
if(akar != NULL){
cout<< akar->item<<" "; //cetak item akar
preOrder(akar->kiri), //cetak di subtree kiri
preOrder(akar->kanan); //cetak di subtree kanan
}}

void inOrder(Node *akar) //fungsi cetak inOrder


{

9
if(akar != NULL){
inOrder(akar->kiri), //cetak di subtree kiri
cout<< akar->item<<" "; //cetak item akar
inOrder(akar->kanan); //cetak di subtree kanan
}}

void postOrder(Node *akar) //fungsi cetak postOrder


{
if(akar != NULL){
postOrder(akar->kiri), //cetak di subtree kiri
postOrder(akar->kanan); //cetak di subtree kanan
cout<< akar->item<<" "; //cetak item akar
}}

main()
{
int item;
Node *phn; //pointer phn untuk menghubungkan dengan link Node
phn = NULL; //alamat pointer phn pada NULL
char pil;

do {
system("cls");
cout<<"\tTREE SORT\n";
cout<<"1. Tambah\n";
cout<<"2. Pre-order\n";
cout<<"3. In-order\n";
cout<<"4. Post-order\n";
cout<<"5. Keluar\n";
cout<<"Silahkan masukkan pilihan anda (1-5)... ";
pil=getche();
if(pil=='1')
{
cout<<"\n";
cout<<"\nItem baru : ";cin>>item;
tambah(&phn,item); //fungsi tambah dengan menggunakan alamat pointer phn
dengan variabel
}

if(pil=='2')
{
if(phn!=NULL) { //jika phn tidak kosong
cout<< "\n-->Item yang masuk : ";tampil (phn); //cetak item yang
masuk
cout<<"\n-->preOrde : ";preOrder(phn); //cetak preOrder
}
else cout<<"\n-->Masih kosong!";
getch();
}

if(pil=='3')
{
if(phn!=NULL) {
cout<< "\n-->Item yang masuk : ";tampil(phn); //cetak item yang
masuk
cout<<"\n-->inOrder : ";inOrder (phn); //cetak item inOrder
}
else cout<<"\n-->Masih kosong!";
getch();

10
}

if(pil=='4')
{
if(phn!=NULL) {
cout<< "\n-->Item yang masuk : ";tampil (phn); //cetak item yang
masuk
cout<<"\n-->postOrder : ";postOrder(phn); //cetak item
postOrder
}
else cout<<"\n-->Masih kosong!";
getch();
}
}
while(pil!='5');
cout<<"\n";
}

11
B. Berikut Merupakan Implementasi Algoritma dari Partition Sort
#include <iostream>
#include <conio.h>
using namespace std;
void quick_sort(int arr[], int left, int right)
{
int i = left, j = right;int tmp;
int pivot = arr[(left+right)/2];/* partition */
while (i<j){
while (arr[i] < pivot)
i++;
while (arr[j] > pivot)
j--;
if (i<=j){
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
i++;j--;
};
}; /* recursion */
if (left < j)
quick_sort(arr, left, j);
if (i < right)
quick_sort(arr, i, right);
}
int main()
{
int i,n,data[50];
cout<<"Masukan banyak data: ";cin>>n;
for(i=0;i<n;i++)
{cout<<"Masukan data ["<<i<<"] : ";cin>>data[i];}
cout<<"\nData sebelum diurutkan: "<<endl;
for(i=0;i<n;i++)
{
cout<<data[i]<<" ";
}cout<<"\n";
quick_sort(data,0,n-1);//hasil pengurutan
cout<<"\nHasil pengurutan:\n";
{

12
int i;
for (i=0;i<n;i++)
cout<<data[i]<<" ";
cout<<"\n";
}getch();
}

3.3. Design Protipe


3.3.1. Design Prototipe Tree Sort
1. PreOrder

2. InOrder

13
3. PostOrder

3.3.2. Design Prototipe Partition Sort

3.4. Video Pembelajaran

14
BAB IV
PENUTUP
4.1. Kesimpulan

Sorting merupakan suatu proses untuk menyusun kembali humpunan obyek


menggunakan aturan tertentu. Tree Sort yang merupakan metode sorting dengan cara
membangun pohon biner dengan menampilkan 3 hasil output yaitu berupa PreOrder,
InOrder, PostOrder. Sedangkan Partition Sort atau Partition exchange sort merupakan
nama lain dari Quick Sort yang merupakan suatu algoritma pengurutan data yang
menggunakan teknik pemecahan data menjadi partisi-partisi.

4.2. Saran

Dari kedua metode sorting yang kami bahas kami lebih menyarankan agar
menggunakan metode sorting partition karena metode sorting partition merupakan nama
lain dari metode sorting quick sort yang saat ini merupakan metode sorting tercepat.
Dalam Penyusunan laporan kali ini Kami menyadari bahwa masih banyak kekurangan
terutama dalam penyusunannya. Maka dari itu kami berharap pembaca dapat
memakluminya dan dapat memberikan masukan yang bersifat membangun agar
kedepanya Laporan dapat menjadi semakin bagus.

15
DAFTAR PUSTAKA

https://sumbersinau.wordpress.com/2013/04/30/algoritma-dan-struktur-data-tree/
http://new-funday.blogspot.com/2012/12/struktur-data-tree-dan-penjelasaanya.html
http://puguhjayadi.blogspot.com/2013/05/tree-sort-c.html
https://www.hardifal.com/2018/10/sorting-materi-dan-algoritma-metode-babble-sort.html

16

Anda mungkin juga menyukai