On 2010-01-22, Steven D'Aprano <st...@remove-this-cybersource.com.au> wrote: > On Fri, 22 Jan 2010 13:35:26 +0000, Neil Cerutti wrote: >> On 2010-01-22, Gilles Ganault <nos...@nospam.com> wrote: >>> Hello >>> >>> I use a dictionary to keep a list of users connected to a web site. >>> >>> To avoid users from creating login names that start with digits in >>> order to be listed at the top, I'd like to sort the list differently >>> every minute so that it'll start with the next letter, eg. display the >>> list from A...Zdigits the first time, then B...ZAdigits, etc. >> >> Resorting is more work than is needed. Just choose a different starting >> index each time you display the names, and set up your lister to >> wrap-around to your arbitrary starting index. > > The original poster's requirement is to start at a new *letter* > each time, not whatever name happens to be at index N. > > Unless you can predict what index to use for (say) names > starting with "B", then your scheme doesn't work. In order to > find that index, you have to do a linear search of the list > after every sort, turning sorting into O(N**2) instead of > O(N*log N).
O(N*Log N) + O(N) == O(N**2)? Besides, the idea was to avoid sorting altogether. -- Neil Cerutti -- http://mail.python.org/mailman/listinfo/python-list