# PEMBAHASAN ENAM LATIHAN PERTEMUAN 12
# Fungsi jejak binary search
jejak_binary <- function(data, target) {
kiri <- 1
kanan <- length(data)
hasil <- data.frame()
while (kiri <= kanan) {
tengah <- floor((kiri + kanan) / 2)
hasil <- rbind(hasil, data.frame(
kiri = kiri,
kanan = kanan,
tengah = tengah,
nilai = data[tengah]
))
if (data[tengah] == target) {
break
} else if (data[tengah] < target) {
kiri <- tengah + 1
} else {
kanan <- tengah - 1
}
}
return(hasil)
}
# Membuat data terurut
lat_urut <- seq(10, 100, by = 10)
# 12A Jejak pencarian 80
print(jejak_binary(lat_urut, 80))
## kiri kanan tengah nilai
## 1 1 10 5 50
## 2 6 10 8 80
# 12F Perbandingan kunjungan target terakhir
print(c(
sequential = 1024,
binary = nrow(jejak_binary(seq_len(1024), 1024))
))
## sequential binary
## 1024 11