- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
import math
arr = list(range(1, 10001))
num = int(input('Число: '))
log = int(math.log2(len(arr)))
lens = int(len(arr)/2)
arr1 = arr[:lens]
arr2 = arr[lens:]
i = 0
while i <= log:
print('Шаг', i, 'из', log)
if arr1:
if num == arr1[0]:
print(arr1[0])
break
if num == arr1[-1]:
print(arr1[-1])
break
if arr2:
if num == arr2[0]:
print(arr2[0])
break
if num == arr2[-1]:
print(arr2[-1])
break
if num in arr1:
len1 = arr1
arr1 = arr1[:int(len(arr1)/2) if int(len(arr1)/2) == 0 else int(len(arr1)/2+1)]
arr2 = len1[int(len(arr1)/2) if int(len(arr1)/2) == 0 else int(len(arr1)/2+1):]
if num in arr2:
len2 = arr2
arr2 = arr2[:int(len(arr2)/2) if int(len(arr2)/2) == 0 else int(len(arr2)/2+1)]
arr1 = len2[int(len(arr2)/2) if int(len(arr2)/2) == 0 else int(len(arr2)/2+1):]
i += 1
cykablyad 21.02.2017 06:34 # +3
> list
Мне кажется, нас наебали
bormand 21.02.2017 06:35 # +8
bormand 21.02.2017 06:37 # +8
Ахуенный двоичный поиск.
guest 21.02.2017 10:22 # 0
Ну и где тут не двоичный поиск?
dxd 21.02.2017 10:30 # +4
inkanus-gray 21.02.2017 11:43 # +5
inho 21.02.2017 18:21 # +2
dxd 21.02.2017 18:51 # 0
1024-- 21.02.2017 19:20 # +2
cykablyad 21.02.2017 19:37 # 0
dxd 21.02.2017 12:35 # +3
inkanus-gray 21.02.2017 13:12 # +1
dxd 21.02.2017 15:13 # 0
roman-kashitsyn 21.02.2017 15:59 # +1
А как насчитался квадратичный? Вроде бы каждый раз размер слайса уменьшается вдвое.
2*N/2 + 2*N/4 + 2*N/8 + ... <= 2*N
inkanus-gray 21.02.2017 16:28 # +5
Ну тогда всё нормально.
cykablyad 21.02.2017 10:30 # +5
говно