Anggota Kelompok:
1. Xxx (NIM)
2. Yyy (NIM)
3. Zzz (NIM)
4. Www (NIM)
1. Buatlah sebuah method yang mengimplementasikan Bubble Sort untuk mengurutkan elemen-elemen dari
sebuah array. Gunakan method tersebut untuk mengurutkan array-array dengan ukuran 𝑛 dan 3 jenis berbeda:
elemen array sudah urut (sorted array), elemen array terbalik (reversed array), elemen array acak (random
array).
Ukur waktu yang dibutuhkan untuk mengurutkan, kemudian ulangi untuk 𝑛 yang berbeda.
Lengkapi tabel berikut kemudian plot hasilnya dalam sebuah grafik.
Durasi (ns)
𝒏
Sorted Array Reversed Array Random Array
1
2
5
10
20
50
100
1000
10000
}
2. Buatlah sebuah method yang mengimplementasikan Merge Sort untuk mengurutkan elemen-elemen dari
sebuah array. Gunakan method tersebut untuk mengurutkan array-array dengan ukuran 𝑛 dan 3 jenis berbeda:
elemen array sudah urut (sorted array), elemen array terbalik (reversed array), elemen array acak (random
array).
Ukur waktu yang dibutuhkan untuk mengurutkan, kemudian ulangi untuk 𝑛 yang berbeda.
Lengkapi tabel berikut kemudian plot hasilnya dalam sebuah grafik. Bandingkan hasilnya dengan Bubble Sort.
Durasi (ns)
𝒏
Sorted Array Reversed Array Random Array
1
2
5
10
20
50
100
1000
10000
Merge(b[], c[])
1. a[] = empty
2. i = 1, j = 1
3. WHILE i <= Length(b[]) OR j <= Length(c[])
4. IF b[i] < c[j] THEN
5. a.append(b[i]); i = i+1
6. ELSE
7. a.append(c[j]); j = j+1
8. RETURN a[]
Berikut kerangka awal dari program yang harus kalian modifikasi dan jalankan.
import java.util.Random;
}
3. Buatlah sebuah method yang mengimplementasikan Binary Search untuk mencari posisi sebuah nilai dalam
sebuah array. Gunakan method tersebut untuk mencari sebuah nilai acak dalam array dengan ukuran 𝑛. Nilai
yang dicari bisa ada dalam array maupun tidak. Jika tidak ada dalam array, maka method seharusnya
mengembalikan nilai -1.
Ukur waktu yang dibutuhkan untuk mencari nilai tersebut, kemudian ulangi untuk 𝑛 yang berbeda.
Lengkapi tabel berikut kemudian plot hasilnya dalam sebuah grafik.
Durasi (ns)
𝒏
Nilai Yang Dicari Ada Nilai Yang Dicari Tidak Ada
1
2
5
10
20
50
100
1000
10000
startTime = System.nanoTime();
pos = binarySearch(notInArray, arr);
duration = System.nanoTime() - startTime;
System.out.println("Time for finding value not in array: " + duration + " ns");
}
}
4. Buatlah sebuah method yang mengimplementasikan Exponentiation by Squaring untuk menghitung 𝑥 𝑛 .
Gunakan method tersebut untuk menghitung 3𝑛 dengan nilai 𝑛 yang berbeda-beda.
Ukur waktu yang dibutuhkan, kemudian ulangi untuk 𝑛 yang berbeda.
Lengkapi tabel berikut kemudian plot hasilnya dalam sebuah grafik. Bandingkan hasilnya dengan metode
exponentiation biasa (iterative).
Exponentiation Method
𝒏
Iterative Squaring
1
2
5
10
50
100
1000
10000
100000
Function exp_by_squaring(x, n)
if n = 0 then return 1;
else if n = 1 then return x ;
else if n is even then return exp_by_squaring(x * x, n / 2);
else if n is odd then return x * exp_by_squaring(x * x, (n - 1) / 2);
Berikut kerangka awal dari program yang harus kalian modifikasi dan jalankan.
import java.math.BigInteger;
startTime = System.nanoTime();
res = expBySquaring(x, n);
duration = System.nanoTime() - startTime;
System.out.println("Time taken by exp by squaring: " + duration + " ns");
}