sort functions in python

Jeff Schwab jeff at schwabcenter.com
Sat Feb 9 17:28:15 EST 2008


Steven D'Aprano wrote:
> On Sat, 09 Feb 2008 13:37:23 -0800, Jeff Schwab wrote:
> 
>> Carl Banks wrote:
>>> On Feb 8, 10:09 pm, Jeff Schwab <j... at schwabcenter.com> wrote:
>>>> If you expect your data to be pretty nearly sorted already, but you
>>>> just want to make sure (e.g. because a small number of elements may
>>>> have been inserted or removed since the last sort), bubble-sort is a
>>>> good choice.
>>> But if you're at that stage you probably were doing something wrong in
>>> the first place.
>> How do you figure?  You don't always have control over the
>> insertions/replacements, or where they happen.  As a silly example,
>> assume you have a sorted list of children, by height.  Maybe you check
>> your list once per school semester.  The new sort order for any given
>> semester will likely be very close to the previous order; however, a few
>>   swaps may be in order, according to the different speeds at which
>> children have grown.
> 
> You check their heights once per semester, but you're worried about an 
> extra ten or twenty microseconds to sort the data?

Are you serious?

The fact that you wouldn't use a Python script for this is what makes it 
a "silly" example in the first place.  The debate is whether Bubble Sort 
is so bad that someone should get slapped upside the head for even 
mentioning it.  I think it's a tool, like any other, and that 
occasionally it might be the right tool for the job.  Imagine that 
instead of children, we're keeping a sorted list of a very large number 
of crystals that may grow at varying speeds, and that the sizes of the 
individual crystals are polled at a rate limited by the time taken by 
the sort algorithm.

> Frankly, if we're talking about sorting at the level of Python 
> application programming, nothing you write is going to beat the speed of 
> the built-in list.sort() and sorted() built-ins.

That's probably true with five-nines probability, but there may be 
exceptions.  Do you really not understand what I'm getting at, or do you 
just disagree?



More information about the Python-list mailing list