顺序查找

算法 / 查找

# Time Complexity O(n)
linear_search <- function(lst, x) {
  for (n in seq_along(lst)) {
    if (lst[n] == x) return(n)
  }
  # Positions start at 1, so 0 means not found
  0
}

items <- c(2, 3, 5, 7, 11, 13, 17)
index_1 <- linear_search(items, 1)
# index_1 = 0
index_7 <- linear_search(items, 7)
# index_7 = 4
index_19 <- linear_search(items, 19)
# index_19 = 0

cat("index_1 =", index_1, "\n")
cat("index_7 =", index_7, "\n")
cat("index_19 =", index_19, "\n")

# *** simplified speed test ***
items <- 1:1000000
count <- 10

elapsed <- system.time(
  for (i in seq_len(count)) {
    linear_search(items, 777777)
  })[["elapsed"]]
microseconds <- round(elapsed / count * 1e6, 2)

cat("microseconds =", microseconds, "\n")