2020-12-21 01:49:22 +01:00
|
|
|
# Iterate through the array from both sides to find the index of search_item.
|
|
|
|
|
|
|
|
def double_linear_search(array, search_item)
|
|
|
|
start_ind = 0
|
|
|
|
end_ind = array.length - 1
|
|
|
|
|
|
|
|
while start_ind <= end_ind
|
2020-12-21 01:50:42 +01:00
|
|
|
return start_ind if array[start_ind] == search_item
|
|
|
|
return end_ind if array[end_ind] == search_item
|
|
|
|
|
|
|
|
start_ind += 1
|
|
|
|
end_ind -= 1
|
2020-12-21 01:49:22 +01:00
|
|
|
end
|
|
|
|
|
|
|
|
# returns -1 if search_item is not found in array
|
2020-12-21 01:50:42 +01:00
|
|
|
-1
|
2020-12-21 01:49:22 +01:00
|
|
|
end
|
|
|
|
|
|
|
|
puts(double_linear_search([1, 5, 5, 10], 1))
|
|
|
|
# => 0
|
2020-12-21 01:53:04 +01:00
|
|
|
|
2020-12-21 01:49:22 +01:00
|
|
|
puts(double_linear_search([1, 5, 5, 10], 5))
|
|
|
|
# => 1
|
2020-12-21 01:53:04 +01:00
|
|
|
|
2020-12-21 01:49:22 +01:00
|
|
|
puts(double_linear_search([1, 5, 5, 10], 100))
|
|
|
|
# => -1
|
2020-12-21 01:53:04 +01:00
|
|
|
|
2020-12-21 01:49:22 +01:00
|
|
|
puts(double_linear_search([1, 5, 5, 10], 10))
|
|
|
|
# => 3
|