Skip to content

Instantly share code, notes, and snippets.

@mayfer
Created October 22, 2014 19:05
Show Gist options
  • Save mayfer/6839d95f18f4690cc0bc to your computer and use it in GitHub Desktop.
Save mayfer/6839d95f18f4690cc0bc to your computer and use it in GitHub Desktop.
Find index of number (two different methods)
# N is number of elements
# N
# O(N)
def find_index(number, numbers)
numbers.each_with_index do |n, i|
if n == number
return i
end
return nil
end
end
# assume that numbers are sorted
# O(log N)
def find_index(number, numbers)
first = 0
last = numbers.length-1
middle = last / 2
loop do
puts "#{first}, #{middle}, #{last}"
if numbers[middle] < number
first = middle
middle = first + ( (last - middle) / 2 )
elsif numbers[middle] > number
last = middle
middle = (middle - first) / 2
else
return numbers[middle]
end
break if numbers[middle] == number
end
if number == numbers[middle]
return numbers[middle]
else
return nil
end
end
puts find_index(15, [1, 4, 7, 9, 12, 15, 22, 55, 453, 1000])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment