From ca6b4fe36b71c64b3f7cbf533bcf3be8765cc66b Mon Sep 17 00:00:00 2001
From: Fred Drake <fdrake@acm.org>
Date: Tue, 28 Apr 1998 18:28:21 +0000
Subject: Section for bisect module.

---
 Doc/lib/libbisect.tex | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++
 Doc/libbisect.tex     | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 110 insertions(+)
 create mode 100644 Doc/lib/libbisect.tex
 create mode 100644 Doc/libbisect.tex

diff --git a/Doc/lib/libbisect.tex b/Doc/lib/libbisect.tex
new file mode 100644
index 0000000..81cb550
--- /dev/null
+++ b/Doc/lib/libbisect.tex
@@ -0,0 +1,55 @@
+% LaTeX produced by Fred L. Drake, Jr. <fdrake@acm.org>, with an
+% example based on the PyModules FAQ entry by Aaron Watters
+% <arw@pythonpros.com>.
+
+\section{Standard Module \module{bisect}}
+\stmodindex{bisect}
+\label{module-bisect}
+
+
+This module provides support for maintaining a list in sorted order
+without having to sort the list after each insertion.  For long lists
+of items with expensive comparison operations, this can be an
+improvement over the more common approach.  The module is called
+\module{bisect} because it uses a basic bisection algorithm to do its
+work.  The source code may be used a useful reference for a working
+example of the algorithm (i.e., the boundary conditions are already
+right!).
+
+The following functions are provided:
+
+\begin{funcdesc}{bisect}{list, item\optional{, lo\optional{, hi}}}
+Locate the proper insertion point for \var{item} in \var{list} to
+maintain sorted order.  The parameters \var{lo} and \var{hi} may be
+used to specify a subset of the list which should be considered.  The
+return value is suitable for use as the first parameter to
+\code{\var{list}.insert()}.
+\end{funcdesc}
+
+\begin{funcdesc}{insort}{list, item\optional{, lo\optional{, hi}}}
+Insert \var{item} in \var{list} in sorted order.  This is equivalent
+to \code{\var{list}.insert(bisect.bisect(\var{list}, \var{item},
+\var{lo}, \var{hi}), \var{item})}.
+\end{funcdesc}
+
+
+\subsection{Example}
+\nodename{bisect-example}
+
+The \function{bisect()} function is generally useful for categorizing
+numeric data.  This example uses \function{bisect()} to look up a
+letter grade for an exam total (say) based on a set of ordered numeric
+breakpoints: 85 and up is an `A', 75..84 is a `B', etc.
+
+\begin{verbatim}
+>>> grades = "FEDCBA"
+>>> breakpoints = [30, 44, 66, 75, 85]
+>>> from bisect import bisect
+>>> def grade(total):
+...           return grades[bisect(breakpoints, total)]
+...
+>>> grade(66)
+'C'
+>>> map(grade, [33, 99, 77, 44, 12, 88])
+['E', 'A', 'B', 'D', 'F', 'A']
+\end{verbatim}
diff --git a/Doc/libbisect.tex b/Doc/libbisect.tex
new file mode 100644
index 0000000..81cb550
--- /dev/null
+++ b/Doc/libbisect.tex
@@ -0,0 +1,55 @@
+% LaTeX produced by Fred L. Drake, Jr. <fdrake@acm.org>, with an
+% example based on the PyModules FAQ entry by Aaron Watters
+% <arw@pythonpros.com>.
+
+\section{Standard Module \module{bisect}}
+\stmodindex{bisect}
+\label{module-bisect}
+
+
+This module provides support for maintaining a list in sorted order
+without having to sort the list after each insertion.  For long lists
+of items with expensive comparison operations, this can be an
+improvement over the more common approach.  The module is called
+\module{bisect} because it uses a basic bisection algorithm to do its
+work.  The source code may be used a useful reference for a working
+example of the algorithm (i.e., the boundary conditions are already
+right!).
+
+The following functions are provided:
+
+\begin{funcdesc}{bisect}{list, item\optional{, lo\optional{, hi}}}
+Locate the proper insertion point for \var{item} in \var{list} to
+maintain sorted order.  The parameters \var{lo} and \var{hi} may be
+used to specify a subset of the list which should be considered.  The
+return value is suitable for use as the first parameter to
+\code{\var{list}.insert()}.
+\end{funcdesc}
+
+\begin{funcdesc}{insort}{list, item\optional{, lo\optional{, hi}}}
+Insert \var{item} in \var{list} in sorted order.  This is equivalent
+to \code{\var{list}.insert(bisect.bisect(\var{list}, \var{item},
+\var{lo}, \var{hi}), \var{item})}.
+\end{funcdesc}
+
+
+\subsection{Example}
+\nodename{bisect-example}
+
+The \function{bisect()} function is generally useful for categorizing
+numeric data.  This example uses \function{bisect()} to look up a
+letter grade for an exam total (say) based on a set of ordered numeric
+breakpoints: 85 and up is an `A', 75..84 is a `B', etc.
+
+\begin{verbatim}
+>>> grades = "FEDCBA"
+>>> breakpoints = [30, 44, 66, 75, 85]
+>>> from bisect import bisect
+>>> def grade(total):
+...           return grades[bisect(breakpoints, total)]
+...
+>>> grade(66)
+'C'
+>>> map(grade, [33, 99, 77, 44, 12, 88])
+['E', 'A', 'B', 'D', 'F', 'A']
+\end{verbatim}
-- 
cgit v0.12

