|
|
|
|
|
by fmap
5604 days ago
|
|
I just read the original paper on samplesort, so this might not be the most up to date description, but the basic idea is as follows: - From an input sequence of length n, choose a random subsequence of length k. - Sort the subsequence. - Partition the remaining (n-k) elements of the original sequence into the (k+1) partitions given by the subsequence. - Sort the (k+1) partitions. In the paper, the partitioning and sorting is always done using quicksort. Any n*log(n) sorting algorithm should work though, which includes using samplesort recursively. If you use an optimal value for k (and this might be a significant fraction of n), you can prove that lim_{n->infty} E(C_n)/log(n!) = 1, where E(C_n) is the expected number of comparisons for a sequence of length n. Now, using samplesort recursively, quicksort is samplesort with k = 1. Double-Pivot quicksort is samplesort with k = 2. |
|