Added R version of the binary_search function (#253)
This commit is contained in:
37
01_introduction_to_algorithms/R/binary_search.R
Normal file
37
01_introduction_to_algorithms/R/binary_search.R
Normal file
@@ -0,0 +1,37 @@
|
||||
binary_search <- function(list, item) {
|
||||
# low and high keep track of which part of the list you'll search in.
|
||||
# Every data structure in R indexed by starting at 1.
|
||||
low <- 1
|
||||
high <- length(list)
|
||||
|
||||
# While you haven't narrowed it down to one element ...
|
||||
while (low <= high) {
|
||||
# ... check the middle element
|
||||
mid <- (low + high) %/% 2
|
||||
guess <- list[mid]
|
||||
# Found the item.
|
||||
if (guess == item) {
|
||||
return(mid)
|
||||
}
|
||||
# The guess was too high.
|
||||
else if (guess > item) {
|
||||
high <- mid - 1
|
||||
}
|
||||
else{ # The guess was too low.
|
||||
low <- mid + 1
|
||||
}
|
||||
}
|
||||
# Item doesn't exist
|
||||
return(NULL)
|
||||
}
|
||||
|
||||
|
||||
# Set a list
|
||||
my_list <- list(1, 3, 5, 7, 9)
|
||||
|
||||
# Call the function
|
||||
binary_search(my_list, 3) # => 1
|
||||
binary_search(my_list, -1) # => NULL
|
||||
|
||||
# All above code can be simplified by using "which" function
|
||||
which(my_list == 3) # => 1
|
||||
Reference in New Issue
Block a user