Anda di halaman 1dari 5

Fitra Haryadi 041665966

Tugas 2 Struktur Data

1. Buatlah sebuah pengurutan data dari terkecil hingga terbesar dari data berikut (30, 40, 10, 5, 60,
1) dengan menggunakan algoritma Merge-sort yang diimplementasikan dalam bahasa
pemrograman Java? Kemudian analisa mengenai kinerja algoritma tersebut.

Coding Java
public class mergesort {
// menggabungkan 2 array arr[].
// array yg pertama adalah arr[l..m]
// array yang kedua adalah arr[m+1..r]
void merge(int arr[], int l, int m, int r)
{
// menemukan ukuran array
int n1 = m - l + 1;
int n2 = r - m;

/* membuat array sementara/temp */


int L[] = new int[n1];
int R[] = new int[n2];

/*memasukkan data ke array sementara*/


for (int i = 0; i < n1; ++i)
L[i] = arr[l + i];
for (int j = 0; j < n2; ++j)
R[j] = arr[m + 1 + j];

/* menggabungkan kedua array */

// index i untuk array pertama dan j untuk array kedua


int i = 0, j = 0;

int k = l;
while (i < n1 && j < n2) {
if (L[i] <= R[j]) {
arr[k] = L[i];
i++;
}
else {
arr[k] = R[j];
j++;
}
k++;
}

/* mengkopi sisa elemen L[] jika ada */


while (i < n1) {
Fitra Haryadi 041665966

arr[k] = L[i];
i++;
k++;
}

/* mengkopi sisa elemen R[] jika ada */


while (j < n2) {
arr[k] = R[j];
j++;
k++;
}
}

// fungsi merge sort arr[l..r]


// membagi array menjadi dua (divide & conquer) kemudian mengurutkan kedua array
tersebut
// lalu menyatukannya kembali dan mengurutkannya kembali
void sort(int arr[], int l, int r)
{
if (l < r) {
// mencari tengah-tengah array m
int m = (l + r) / 2;

//mengurutkan array l dan array r


sort(arr, l, m);
sort(arr, m + 1, r);

// menyatukan kembali array tersebut


merge(arr, l, m, r);
}
}

/* fungsi print array dengan ukuran n */


static void printArray(int arr[])
{
int n = arr.length;
for (int i = 0; i < n; ++i)
System.out.print(arr[i] + " ");
System.out.println();
}

// main
public static void main(String args[])
{
int arr[] = { 30, 40, 10, 5, 60, 1 };

System.out.println("Data awal");
printArray(arr);

mergesort ob = new mergesort();


ob.sort(arr, 0, arr.length - 1);

System.out.println("\nData yang telah diurutkan");


printArray(arr);
Fitra Haryadi 041665966

Hasil Coding

Analisa

Merge-sort adalah algoritma sorting yang menggunakan metode divide and


conquer yang membagi array[] awal menjadi dua array dan kemudian
mengurutkannya secara masing-masing. Kemudian menggabungkannya diakhir
lalu diurutkan kembali.

2. Buatlah sebuah pengurutan data dari terkecil hingga terbesar dari data berikut (30, 40, 10, 5, 60,
1) dengan menggunakan algoritma Counting-sort yang diimplementasikan dalam bahasa
pemrograman Java? Kemudian analisa mengenai kinerja algoritma tersebut.

Coding Java
public class countingsort {
void sort(int arr[])
{
int n = arr.length;

// mendeklarasikan array output


int output[] = new int[n];

// membuat array count[] yang menyimpan elemen satu per satu


// menginisialisasi intacter dan i menjadi 0
int count[] = new int[256];
for (int i = 0; i < 256; ++i)
count[i] = 0;
Fitra Haryadi 041665966

// menyimpan setiap intacter


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

// memasukkan intacter ke array output


for (int i = 1; i <= 255; ++i)
count[i] += count[i - 1];

// membuat array intacter


for (int i = n - 1; i >= 0; i--) {
output[count[arr[i]] - 1] = arr[i];
--count[arr[i]];
}

// kopi output array ke arr


// sehingga arr mengandung intacter
for (int i = 0; i < n; ++i)
arr[i] = output[i];
}
//fungsi printarray
static void printArray(int arr[])
{
int n = arr.length;
for (int i = 0; i < n; ++i)
System.out.print(arr[i] + " ");
System.out.println();
}

// main
public static void main(String args[])
{
countingsort ob = new countingsort();
int arr[] = { 30, 40, 10, 5, 60 , 1 };
System.out.print("array input adalah ");
printArray(arr);

ob.sort(arr);

System.out.print("\narray yang telah diurutkan ");


printArray(arr);

}
}
Fitra Haryadi 041665966

Hasil Kodingan

Analisa Counting Sort


Counting-sort adalah salah satu algoritma paling efisien untuk mengurutkan suatu data pada range
tertentu. Algoritma ini bekerja dengan mengurutkan bilangan bulat (misalkan) yang memiliki nilai-nilai
yang berbeda. Seperti 1 dan 2 memiliki nilai yang berbeda dimana 2 lebih besar daripada 1. Kemudian
memasukkan nilai-nilai tersebut pada suatu nilai kunci seperti hashing. Yang kemudian akan
dikembalikan pada array baru yang dimasukkan sesuai urutan nilai kunci yang telah dilakukan
sebelumnya.

Anda mungkin juga menyukai