Uploaded by Yoga PP

18222073 Analysis of algorithm

advertisement
Nama : Yoga Putra Pratama
NIM : 18222073
Jawaban:
1. Pseudocode untuk mencari semua pasangan bilangan yang jika dijumlahkan
menghasilkan suatu bilangan yang sama:
function findPairsWithSameSum(arr):
# Inisialisasi dictionary untuk menyimpan pasangan bilangan
pair_dict = {}
# Iterasi melalui seluruh pasangan bilangan dalam list
for i from 0 to len(arr) - 1:
for j from i+1 to len(arr) - 1:
# Hitung hasil penjumlahan pasangan bilangan
sum_pair = arr[i] + arr[j]
# Periksa apakah hasil penjumlahan sudah ada dalam dictionary
if sum_pair in pair_dict:
# Jika sudah ada, tambahkan pasangan bilangan ke daftar
pair_dict[sum_pair].append((arr[i], arr[j]))
else:
# Jika belum ada, buat entri baru dalam dictionary
pair_dict[sum_pair] = [(arr[i], arr[j])]
# Kembalikan dictionary yang berisi pasangan bilangan yang sama hasil
penjumlahannya
return pair_dict
2. Pada algoritma tersebut, terdapat dua loop bersarang (nested loops):
1) Loop pertama (iterasi dari i = 0 hingga n-1)
2) Loop kedua (iterasi dari j = i+1 hingga n-1)
Jumlah operasi perbandingan dalam loop kedua = (n-1) * n / 2. Namun, dalam setiap iterasi
loop kedua, dilakukan juga beberapa operasi aritmatika, yaitu penjumlahan arr[i] + arr[j],
dan pengecekan apakah hasil penjumlahan tersebut sudah ada dalam dictionary. Jadi,
jumlah operasi perbandingan dalam algoritma ini adalah:
(n-1) * n / 2 * Θ (1) = (n2 - n) / 2 * Θ (1)
Oleh karena itu, worst-case time complexity dari algoritma ini adalah Θ (n2) karena jumlah
operasi perbandingannya adalah kuadratik terhadap panjang list (n).
Download