-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbisect_doc.py
More file actions
32 lines (26 loc) · 1.18 KB
/
bisect_doc.py
File metadata and controls
32 lines (26 loc) · 1.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import bisect
S = [0,4,2,1,8]
## 二分探索は絶対に先にソートする![0,1,2,4,8]
S.sort()
## 探している値をそのまま表すならば基準
print(bisect.bisect_left(S, -1)) # 0
print(bisect.bisect_left(S, 2)) # 2
print(bisect.bisect_left(S, 3)) # 3
print(bisect.bisect_left(S, 8)) # 4
print(bisect.bisect_left(S, 9)) # 5
## 探している値をindexにするなら基準
print(bisect.bisect_right(S, -1)) # 0
print(bisect.bisect_right(S, 2)) # 3
print(bisect.bisect_right(S, 3)) # 3
print(bisect.bisect_right(S, 8)) # 5
print(bisect.bisect_right(S, 9)) # 5
########################################################
## How to decide using bisect or binary_search ##
## 目標とする値がその配列にあるかどうか → 自作binary_search ##
## 目標とする値と配列のindexで操作したい → bisect ##
## え、てか、ぜんぶbisectでよくね? ##
## いや、二部探索途中の値を用いる時は、自作しなきゃいけない ##
########################################################
T = [1, 1, 1, 2, 2, 2, 3, 3, 3]
print(bisect.bisect_left(T, 2)) # 3
print(bisect.bisect_right(T, 2)) # 6