mirror of
https://github.com/krahets/hello-algo.git
synced 2026-07-16 11:02:09 +08:00
build
This commit is contained in:
@@ -339,13 +339,7 @@ comments: true
|
||||
=== "Ruby"
|
||||
|
||||
```ruby title="binary_search.rb"
|
||||
=begin
|
||||
File: binary_search.rb
|
||||
Created Time: 2024-04-09
|
||||
Author: Blue Bean (lonnnnnnner@gmail.com)
|
||||
=end
|
||||
|
||||
# ## Бинарный поиск (двусторонне замкнутый интервал) ###
|
||||
### Бинарный поиск (двусторонне замкнутый интервал) ###
|
||||
def binary_search(nums, target)
|
||||
# Инициализировать двусторонне замкнутый интервал [0, n-1], то есть i и j указывают на первый и последний элементы массива соответственно
|
||||
i, j = 0, nums.length - 1
|
||||
@@ -669,35 +663,7 @@ comments: true
|
||||
=== "Ruby"
|
||||
|
||||
```ruby title="binary_search.rb"
|
||||
=begin
|
||||
File: binary_search.rb
|
||||
Created Time: 2024-04-09
|
||||
Author: Blue Bean (lonnnnnnner@gmail.com)
|
||||
=end
|
||||
|
||||
# ## Бинарный поиск (двусторонне замкнутый интервал) ###
|
||||
def binary_search(nums, target)
|
||||
# Инициализировать двусторонне замкнутый интервал [0, n-1], то есть i и j указывают на первый и последний элементы массива соответственно
|
||||
i, j = 0, nums.length - 1
|
||||
|
||||
# Цикл завершается, когда диапазон поиска пуст (при i > j диапазон пуст)
|
||||
while i <= j
|
||||
# Теоретически числа в Ruby могут быть сколь угодно большими (ограничены только объемом памяти), поэтому не нужно учитывать переполнение больших чисел
|
||||
m = (i + j) / 2 # Вычислить индекс середины m
|
||||
|
||||
if nums[m] < target
|
||||
i = m + 1 # Это означает, что target находится в интервале [m+1, j]
|
||||
elsif nums[m] > target
|
||||
j = m - 1 # Это означает, что target находится в интервале [i, m-1]
|
||||
else
|
||||
return m # Целевой элемент найден, вернуть его индекс
|
||||
end
|
||||
end
|
||||
|
||||
-1 # Целевой элемент не найден, вернуть -1
|
||||
end
|
||||
|
||||
# ## Бинарный поиск (лево замкнутый, право открытый интервал) ###
|
||||
### Бинарный поиск (лево замкнутый, право открытый интервал) ###
|
||||
def binary_search_lcro(nums, target)
|
||||
# Инициализировать лево замкнутый, право открытый интервал [0, n), то есть i и j указывают на первый элемент массива и позицию сразу за последним элементом соответственно
|
||||
i, j = 0, nums.length
|
||||
|
||||
Reference in New Issue
Block a user