Sorting algorithms/Tree sort on a linked list

From Rosetta Code
Revision as of 07:54, 30 March 2014 by rosettacode>NevilleDNZ (The tree sort is considered by some to be the faster method to sort a linked list, followed by Quicksort and Mergesort:)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Task
Sorting algorithms/Tree sort on a linked list
You are encouraged to solve this task according to the task description, using any language you may know.

This page uses content from Wikipedia. The current wikipedia article is at article. The original RosettaCode article was extracted from the wikipedia article № 295989333 of 15:13, 12 June 2009 . The list of authors can be seen in the page history. As with Rosetta Code, the pre 5 June 2009 text of Wikipedia is available under the GNU FDL. (See links for details on variance)

A tree sort is a sort algorithm that builds a binary search tree from the keys to be sorted, and then traverses the tree (in-order) so that the keys come out in sorted order. Its typical use is when sorting the elements of a stream from a file. Several other sorts would have to load the elements to a temporary data structure, whereas in a tree sort the act of loading the input into a data structure is sorting it.

The tree sort is considered by some to be the faster method to sort a linked list, followed by Quicksort and Mergesort:

Sediment sort, bubble sort, selection sort perform very badly.

Test case: Create a linked list of all the sentences all the episodes of Finnegans Wake by James Joyce. Load them into a local memory based linked list, then tree sort them inplace and print the number of swaps and Bogomips required to perform the sort. (The book is to be stored locally in a test file on disk for use by the specimin code.)