Алгоритмы: различия между версиями
Перейти к навигации
Перейти к поиску
Artem (обсуждение | вклад) |
Artem (обсуждение | вклад) |
||
Строка 30: | Строка 30: | ||
return (a * b) / gcd(a, b) | return (a * b) / gcd(a, b) | ||
} | } | ||
</pre> | |||
= Bin Search = | |||
<pre> | |||
def search(arr, value): | |||
if not arr: | |||
return False | |||
left, right = 0, len(arr) - 1 | |||
while left <= right: | |||
mid = (left + right) // 2 | |||
if arr[mid] == value: | |||
return True | |||
elif arr[mid] < value: | |||
left = mid + 1 | |||
else: | |||
right = mid - 1 | |||
return False | |||
</pre> | </pre> |
Версия от 15:41, 19 ноября 2024
НОД и НОК
// fast! func gcd(a uint, b uint) uint { for a != 0 && b != 0 { if a > b { a = a % b } else { b = b % a } } return a + b } func gcd2(a uint, b uint) uint { for a != b { if a > b { a = a - b } else { b = b - a } } return a + b } func lcm(a uint, b uint) uint { return (a * b) / gcd(a, b) }
Bin Search
def search(arr, value): if not arr: return False left, right = 0, len(arr) - 1 while left <= right: mid = (left + right) // 2 if arr[mid] == value: return True elif arr[mid] < value: left = mid + 1 else: right = mid - 1 return False