Anda di halaman 1dari 19

Analisis Algoritma Tree Short dalam Pengolahan dan

Penyimpanan Data

Dosen Pengampu : Halim Maulana


Mata Kuliah : Struktur Data

NAMA KELOMPOK :
ADILLA MUSTIKA JANNAH 2009010067
DANIAL RAMADHAN 209010074
FARHAN ZULKARNAEN HARAHAP 2009010060

KELAS :
B1 PAGI

FAKULTAS ILMU KOMPUTER & TEKNOLOGI INFORMASI


PROGRAM STUDI SISTEM INFORMASI
UNIVERSITAS MUHAMMADIYAH SUMATERA UTARA
T.A 2021/2022

1
KATA PENGANTAR

Alhamdulillah, puji syukur ke hadirat Allah SWT. Karena atas taufik dan rahmat-Nya
kami dapat menyelesaikan miniriset tentang “Analisis Algoritma Tree Short dalam
Pengolahan dan Penyimpanan Data” ini. Shalawat serta salam senantiasa kita
sanjungkan kepada junjungan kita, Nabi Muhammad SAW, keluarga, sahabat, serta
semua umatnya hingga kini. Dan Semoga kita termasuk dari golongan yang kelak
mendapatkan syafaatnya.

Dalam kesempatan ini, kami ingin mengucapkan terima kasih kepada semua pihak
yang telah berkenan membantu pada tahap penyusunan hingga selesainya miniriset
Struktur Data ini. Harapan kami semoga miniriset Struktur Data yang telah tersusun
ini dapat bermanfaat sebagai salah satu rujukan maupun pedoman bagi para pembaca,
menambah wawasan serta pengalaman, sehingga nantinya saya dapat memperbaiki
bentuk ataupun isi makalah ini menjadi lebih baik lagi.

Kami sadar bahwa kami ini tentunya tidak lepas dari banyaknya kekurangan, baik
dari aspek kualitas maupun kuantitas dari bahan penelitian yang dipaparkan. Semua
ini murni didasari oleh keterbatasan yang kami miliki. Oleh sebab itu, kami
membutuhkan kritik dan saran kepada segenap pembaca yang bersifat membangun
untuk lebih meningkatkan kualitas di kemudian hari.

Medan, Juni 2021


Penulis

2
DAFTAR ISI

KATA PENGANTAR...........................................................................................................i
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.............................................................................................................8
3.2. Implementasi Algoritma...............................................................................................8
BAB IV
4.2. Kesimpulan.................................................................................................................13
4.3. Saran...........................................................................................................................13
PENUTUP

3
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.

4
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?
2. Bagaimana Proses Algoritma Tree sort?
3. Serta Bagaimana Hasil Algoritma Tree 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.
BAB II
PEMBAHSAN

Materi
A. Tree Sort
Pengurutan (Sorting) adalah suatu proses pengurutan data yang sebelumnya
disusun secara acak atau tidak teratur menjadi urut dan teratur menurut suatu aturan
tertentu.
1. Definisi Tree Sort
Tree Merupakan kumpulan node yang saling terhubung satu sama lain dalam suatu
kesatuan yang membentuk layakya struktur sebuah pohon. Struktur pohon adalah suatu
cara merepresentasikan suatu struktur hirarki (one-to-many) secara grafis yang mirip
sebuah pohon, walaupun pohon tersebut hanya tampak sebagai kumpulan node-node dari
atas ke bawah.
Jika kita memperhatikan setiap simpul dalam pohon biner, kita bisa menyusun struktur
data yang tepat dari simpul-simpul tersebut. Kita dapat melihat bahwa dalam setiap
simpul selalu berisi dua buah pointer untuk menunjuk ke cabang kiri dan cabang kanan,
dan informasi yang akan disimpan dalam simpul tersebut. Dengan memperhatikan hal
ini, simpul dalam pohon biner disajikan sebagai berikut :
Kiri Info Kanan

Sesuai dengan gambar diatas maka deklarasi list yang sesuai adalah : typedef
char TypeInfo;
typedef struct Simpul *Tree; struct
Simpul {
TypeInfo Info;
tree Kiri, /* cabang kiri */
Kanan; /* cabang kanan */
};

Tree sort adalah metode sorting dengan cara membangun pohon biner
dengan menampilkan 3 hasil output yaitu berupa PreOrder, InOrder, PostOrder.
2. Istilah – istilah dalam Tree
 Prodecessor : node yang berada diatas node tertentu.
 Successor : node yang berada di bawah node tertentu.
 Ancestor : seluruh node yang terletak sebelum node tertentu dan
terletak pada jalur yang sama.
 Descendant : seluruh node yang terletak sesudah node tertentu dan
terletak pada jalur yang sama.
 Parent : predecssor satu level di atas suatu node.
 Child : successor satu level di bawah suatu node.
 Sibling : node-node yang memiliki parent yang sama dengan suatu
node.
 Subtree : bagian dari tree yang berupa suatu node beserta
descendantnya dan memiliki semua karakteristik dari tree
tersebut.
 Size : banyaknya node dalam suatu tree.
 Height : banyaknya tingkatan/level dalam suatu tree.
 Root : satu-satunya node khusus dalam tree yang tak punya
predecssor.
 Leaf : node-node dalam tree yang tak memiliki seccessor.
 Degree : banyaknya child yang dimiliki suatu node.
3. Jenis – jenis Tree
a. Binary Tree
Tree dengan syarat bahwa tiap node hanya boleh memiliki maksimal
dua sub pohon dan kedua subpohon harus terpisah. Kelebihan struktur
Binary Tree :
 Mudah dalam penyusunan algoritma sorting
 Searching data relatif cepat
 Fleksibel dalam penambahan dan penghapusan data

Full Binary Tree


Binary Tree yang tiap nodenya (kecuali leaf) memiliki dua child dan
tiap subtree harus mempunyai panjang path yang sama.

Complete Binary Tree


Mirip dengan Full Binary Tree, namun tiap subtree boleh memiliki
panjang path yang berbeda. Node kecuali leaf memiliki 0 atau 2 child.
Skewed Binary Tree
Binary Tree yang semua nodenya (kecuali leaf) hanya memiliki satu
child.

AVL Tree
AVL Tree adalah Binary Search Tree yang memilikikeseimbangan yang
tetap antara subpohon kiri dan kanan tidak lebih dari 1 untuk setiap simpulnya dan
memiliki ketinggian yang sama

1. Konsep dan Algoritma


Konsep dasar dari tree sort adalah sebagaimana sebuah pohon, ada akar,
batang, ranting, daun, dsb. 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.
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:

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.

Selanjutnya kita akan membahas alur partition sort yaitu, Pertama siapkan angka
yang ingin diurutkan dengan metode Quick Short lalu Pilih elemen sementara atau
pivot value, elemen sementara ini berguna sebagai patokan selesainya partisi. karena
hanya sementara, jadi kalau partisinya sudah mencapai elemen sementara tersebut maka
partisi selesai dan harus memilih elemen sementara yang lain sebagai patokan.
Setelah ditentukan elemen sementaranya, kita pilih angka pertama dan terakhir.
Jika angka pertama sudah benar posisinya yaitu angka 1 lebih kecil dari angka 7
(elemen sementara), maka kita geser 1 angka dari angka pertama. Jika angka terkahir
belum benar dan harus dicocokkan jadi tidak harus menggeser ke angka sebelahnya
terlebih dahulu. Dan akan begitu seterusnya.
3.2. Implementasi Algoritma
A. Berikut Merupakan Implementasi Algoritma dari Tree Sort

1. Pembahan pada AVL Tree

2. Pembuatan Simpul Akar

void BuatSimpulAkar ( )
{ if (Root == NULL)
{ if (P 1 = NULL)
{ Root = P ;
Root -> Leaf = NULL;
Root -> Right = NULL;
}
else
printf (“ \n Simpul Belum Dibuat”);
else
printf (“Pohon sudah Ada “);
3. Pembuatan Simpul

void BuatSimpul (character X0


{
P = (Simpul*) malloc (sizeof
(Simpul)) If (P 1= NULL)
{ P-> INFO = X;
P-> Leaf = NULL;
P-> Right = NULL:
}
else
{ printf (“Pembuatan Simpul Gagal”);
}
}

4. PROSES

#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


{
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();
}

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";
}
BAB IV

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.

Saran
Semoga dalam pengerjaan tugas makalah berikutnya lebih baik lagi dari
pengerjaan tugas makalah yang sebelumnya. Dan kami berharap pembaca
dapat memakluminya dan dapat memberikan masukan yang bersifat
membangun agar kedepanya Laporan dapat menjadi semakin bagus.

Anda mungkin juga menyukai