今早看到了一个bisect 算法,觉得很有意思,想研究一下。这是一个python 的标准库函数,他能帮我们一直维护一个有序的列表,即使是有新的元素插入。主要使用了bisection 算法来完成这一功能。听起来很炫,仔细一想,其实就是二分查找法,和原来的插入排序中使用二分查找的方式确定后一个元素的插入位置是一个道理的。wiki上的解释也是如此。The method is also called the binary search method[2] or the dichotomy method.[3]
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 bisect because it uses a basic bisection algorithm to do its work. The source code may be most useful as a working example of the algorithm (the boundary conditions are already right!).