Return a (medial_value, greater_values, lesser_values) 3-tuple
        obtained by bisecting sequence *seq*.

def _bisect(seq):
        """
        Return a (medial_value, greater_values, lesser_values) 3-tuple
        obtained by bisecting sequence *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