blob: 5fbc4efc02a9464c73030ce9631df90e1ef06bec [file] [log] [blame]
Guido van Rossum4e160981992-09-02 20:43:20 +00001# Bisection algorithms
2
3
4# Insert item x in list a, and keep it sorted assuming a is sorted
5
Guido van Rossumd5484fb1997-10-07 14:45:49 +00006def insort(a, x, lo=0, hi=None):
7 if hi is None:
8 hi = len(a)
Guido van Rossum8ca84201998-03-26 20:56:10 +00009 while lo < hi:
Guido van Rossum4e160981992-09-02 20:43:20 +000010 mid = (lo+hi)/2
11 if x < a[mid]: hi = mid
12 else: lo = mid+1
13 a.insert(lo, x)
14
15
16# Find the index where to insert item x in list a, assuming a is sorted
17
Guido van Rossumd5484fb1997-10-07 14:45:49 +000018def bisect(a, x, lo=0, hi=None):
19 if hi is None:
20 hi = len(a)
Guido van Rossum8ca84201998-03-26 20:56:10 +000021 while lo < hi:
Guido van Rossum4e160981992-09-02 20:43:20 +000022 mid = (lo+hi)/2
23 if x < a[mid]: hi = mid
24 else: lo = mid+1
25 return lo