You are on page 1of 4

Nama : Dimas Vio Karim

NIM : 5183151015

Kelas : PTIK C 2018

1. Buatlah suatu pengimplementasian dari algoritma tree sort dan tree search.
2. Diberikan data berikut :
Data 77 888 46 0 4 7 55 66 7 8 9 71 884
Coba sortir mengunakan merge sort dan quick sort. manakah yang lebih
efisien dari kedua metode tersebut.
3. Coba jelaskan inovasi-inovasi apa yang kalian peroleh dari tugas miniriset
kalian dan apa manfaat serta implementasinya dari algoritma yang kalian
bahas?

Jawaban:

1. Implementasi algoritma
 Tree Seach
#include<iostream>
using namespace std;
struct BstNode {
int data;
BstNode* left;
BstNode* right;
};
BstNode* GetNewNode(int data) {
BstNode* newNode = new BstNode();
newNode->data = data;
newNode->left = newNode->right = NULL;
return newNode;
}
BstNode* Insert(BstNode* root,int data) {
if(root == NULL) { // empty tree
root = GetNewNode(data);
}
else if(data <= root->data) {
root->left = Insert(root->left,data);
}
else {
root->right = Insert(root->right,data);
}
return root;
}
bool Search(BstNode* root,int data) {
if(root == NULL) {
return false;
}
else if(root->data == data) {
return true;
}
else if(data <= root->data) {
return Search(root->left,data);
}
else {
return Search(root->right,data);
}
}
int main() {
cout<<"Nilai Mahasiswa PTIK C 2018 Struktur Data\n";
cout<<"92 89 78 90 81 65\n\n";
BstNode* root = NULL;
root = Insert(root,92);
root = Insert(root,89);
root = Insert(root,78);
root = Insert(root,90);
root = Insert(root,81);
root = Insert(root,65);
int number;
cout<<"Masukan Nilai Yang Mau Dicari\n";
cin>>number;\
if(Search(root,number) == true) cout<<"Ditemukan!\n";
else cout<<"Tidak Ditemukan!\n";
}

 Tree Sort
#include<bits/stdc++.h>
using namespace std;

struct Node
{
int key;
struct Node *left, *right;
};
struct Node *newNode(int item)
{
struct Node *temp = new Node;
temp->key = item;
temp->left = temp->right = NULL;
return temp;
}
void storeSorted(Node *root, int arr[], int &i)
{
if (root != NULL)
{
storeSorted(root->left, arr, i);
arr[i++] = root->key;
storeSorted(root->right, arr, i);
}
}
Node* insert(Node* node, int key)
{
if (node == NULL) return newNode(key);
if (key < node->key)
node->left = insert(node->left, key);
else if (key > node->key)
node->right = insert(node->right, key);
return node;
}
void treeSort(int arr[], int n)
{
struct Node *root = NULL;
root = insert(root, arr[0]);
for (int i=1; i<n; i++)
insert(root, arr[i]);
int i = 0;
storeSorted(root, arr, i);
}
int main()
{
int arr[] = {701, 49, 982, 384, 210};
int n = sizeof(arr)/sizeof(arr[0]);

treeSort(arr, n);

cout << "Sorted Array : ";


for (int i=0; i<n; i++)
cout << arr[i] << " ";

return 0;
}

2. Sorting
 Merge
 Quick

3. Inovasi dan Manfaat


 Inovasi dari Mini Riset mengenai Tree and Partition Sort ini menurut
saya, memberi masukan bagi para programmer dalam Mengurutkan
Data dalam konteks yang sedehana, serta mungkin saja sistem
pencarian ini dapat digunakan di projek besar dan mungkin lebih
efisien dari sistem pengurutan lainya.
 Manfaat dari Mini Riset mengenai Tree and Partition Sort ini menurut
saya, memberikan pemahaman yang mudah dan tidak sulit untuk
dicerna, serta implikasi yang tidaklah rumit, cocok sekali untuk para
programmer pemula.

You might also like