Skor Nilai :
NAMA MAHASISWA :
Dimas Vio Karim NIM : 5183151015
Aulia Oktaviani NIM : 5183151025
Aswar Nasution NIM : 5183351026
Ester Simanjuntak NIM : 5183351030
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.
Tim Penyusun
i
ORGANISASI TEAM
ii
DAFTAR ISI
iii
BAB I
PENDAHULUAN
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 ?
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 :
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
5
b. Inorder
Kunjungan jenis ini mempunyai urutan kunjungan sebagai berikut :
– Kunjungi cabang kiri.
– Cetak isi simpul yang dikunjungi.
– Kunjungi cabang kanan.
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 :
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.
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
};
9
if(akar != NULL){
inOrder(akar->kiri), //cetak di subtree kiri
cout<< akar->item<<" "; //cetak item akar
inOrder(akar->kanan); //cetak di subtree kanan
}}
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();
}
2. InOrder
13
3. PostOrder
14
BAB IV
PENUTUP
4.1. Kesimpulan
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