# 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