Skip to content

Comparisons branch #5

wants to merge 7 commits into from

1 participant


Hi again,
i created a branch which logs the lists whenever a comparison occurs and also keeps track of which items were compared.
Currently I did a quick & dirty visualization with scipy, and matplotlib. It's still able to "compress" the graphs as your version does.

I commented out all the explicit lst.log() in the sorting algorithms, as I think they're not needed anymore + the algorithms may now be used for other things as well.
I also noticed that the quicksort implementation does quite a couple of useless comparisons (of items with the same index).

Maybe this should stay in a branch for now, as I don't have time to check all aftermaths atm.


joernhees added some commits Nov 15, 2010
@joernhees joernhees chmod 644 sortvis baee76b
@joernhees joernhees All comparisons get logged, ending up in TrackList.comparisonList.
As all comparisons are logged, we don't need to call lst.log() from the sorting algorithms anymore (which is good, as they can now be reused for other things than visualization as well).
Also using new-style classes now.
Timsort needed special treatment, as access to the lst while lst.sort() runs is denied (pointers get set to []). The existing workaround was adapted.
Sortable was renamed into Comparator (seemed like a more appropriate name to me).
TrackList.wrap was renamed and modified into setComparator, which now allows to substitute the existing comparator wrapper (or wrap it again), giving more direct control of what happens (e.g., used in TimComparator).
@joernhees joernhees Comments on quicksort, which does unnecessary comparisons of elements…
… with the same index (e.g., if lst[i] <= lst[i])
@joernhees joernhees Commented out debugging output for unnecessary comparisons. e12a0fd
@joernhees joernhees A quick demo script which uses scipy and matplotlib to visualize ever…
…y comparison and swap in several sorting algorithms.
@joernhees joernhees For repr() of a Comparable call repr of its element (instead of str). b46e1ec
@joernhees joernhees Bug in timsort hack fixed: always reinit TimComparator as successive …
…runs (e.g. for averaging would start with old TimComparator.limit values otherwise).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.