Arrays and Iteration
Linear Search
Walk a vector once looking for a target value. Return the index of the
first match, or -1 if none. The simplest possible search loop.
Algorithm
Canonical input arr <- c(4, 7, 1, 9, 3, 8) with target <- 9 finishes
after four compares; the matching 1-indexed position is 4.
Basic Implementation
basic.R
linear_search <- function(arr, target) {
i <- 1
while (i <= length(arr)) {
if (arr[i] == target) {
return(i)
}
i <- i + 1
}
return(-1)
}
arr <- c(4, 7, 1, 9, 3, 8)
target <- 9
result <- linear_search(arr, target)
cat(result, "\n", sep = "")
Complexity
- Time: O(n)
- Space: O(1)
Implementation notes
- R: explicit
while (i <= length(arr))with an earlyreturn(i)the momentarr[i] == target. The stdlibwhich(arr == target)[1]is vectorised and would hide both the running index and the early-exit the lesson is teaching, andmatch(target, arr)would package the whole loop in a single C call. - Function signature
linear_search <- function(arr, target)documents the array contract; the-1sentinel mirrors the language-neutral spec rather than returningNA_integer_(which R programmers often reach for, but which would re-route control flow throughif (is.na(result)) ...in the caller). - The replay shows the running index, the element being checked, and a
matchindicator on each frame. R vectors are 1-indexed, so the match position prints as4instead of3like the 0-indexed language cohorts.
early exit
Return the index the moment `arr[i]` equals the target. Walking past it would defeat the point.
sentinel return
A no-match walk falls off the loop and returns `-1`.