Skip to main content

Binary search on python sorted sequences

Project description

Binary Search in Python

Binary search on already sorted sequences (list, tuple) to get the first element >= or > a value (similar to C++'s std::lower_bound and std::upper_bound).

Requires python >=3.5 for the typing module and >= 3.4 for the enum module, but you can easily extract the search function from binary_search/__init__.py if you need it for a lower version.

Install

  1. pip install binary-search

Usage

See tests.py for more sample usage.

import binary_search as bs

sorted_sequence = (2, 5, 7, 9)
a = bs.search(sorted_sequence, 5)
print(a) # 1 - the index of the first element >= 5

b = bs.search(sorted_sequence, 6)
print(b) # 2 - the index of the first element >= 6 (element 2 with value 7)

You can also use a custom key in the same way as sorted

import binary_search as bs
import random

# sequence of 10 random pairs of integers
sequence = [(random.randint(), random.randint()) for _ in range(10)]
# sort and search just using the first integer
key = lambda pair: pair[0]

sorted_sequence = sorted(sequence, key=key)
bs.search(sorted_sequence, [5, None], key=key)

Development and testing

  1. Fork the repository
  2. Clone your fork
  3. Install it in editable mode pip install -e .
  4. Make any changes and add new tests to tests.py
  5. Run pytest python -m pytest
  6. Commit and push to your fork
  7. Make pull request (merge your fork back to main repo)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

binary_search-0.3.0.tar.gz (2.7 kB view details)

Uploaded Source

File details

Details for the file binary_search-0.3.0.tar.gz.

File metadata

  • Download URL: binary_search-0.3.0.tar.gz
  • Upload date:
  • Size: 2.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.6.5

File hashes

Hashes for binary_search-0.3.0.tar.gz
Algorithm Hash digest
SHA256 ed41a3e49a4b0fbb21d8c32c8943f3d220b0eb01db49f89caf5d80efbdd6b298
MD5 b04fa6bfcdc3e1ec8b8e708be77f0705
BLAKE2b-256 6ae8120de6ce10e8912d4623a5750089a5c17d44f9b3dd60fb89ab5b2e0775a0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page