Professional Documents
Culture Documents
NIM : 5183151015
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);
return 0;
}
2. Sorting
Merge
Quick