code: def _bisect(seq):
          
          if len(seq) == 0:
              return [], None, []
          mid_idx = int(len(seq)/2)
          mid = seq[mid_idx]
          greater = seq[mid_idx+1:]
          lesser = seq[:mid_idx]
          return mid, greater, lesser
docs: Return a (medial_value, greater_values, lesser_values) 3-tuple
          obtained by bisecting sequence *seq*.