view ch3ex3.py @ 18:92e2879e2e33

Rework the red-black tree based on Julienne Walker's tutorial. Insertion is implemented now. Deletion will come next.
author Brian Neal <bgneal@gmail.com>
date Wed, 26 Dec 2012 19:59:17 -0600
parents 0f98bcb5bd3f
children cfb7f28678c7
line wrap: on
line source
"""Chaper 3.3, exercise 3.

Write a function called bisection that takes a sorted list and a target value
and returns the index of the value in the list if it's there, or None if it's
not.

"""

def bisection(a, item):
    """Returns the index of item in the sorted list a if it exists or None if
    not.

    Finds the "rightmost" item if it exists.

    """
    lo = 0
    hi = len(a)

    while lo < hi:
        mid = (lo + hi) // 2
        if item < a[mid]:
            hi = mid
        else:
            lo = mid + 1

    n = lo - 1
    return a[n] if n >= 0 and a[n] == item else None