On Friday, 10 July 2015 at 00:39:16 UTC, Xinok wrote:
On Thursday, 9 July 2015 at 21:57:39 UTC, Xinok wrote:
I found this paper which describes an in-place algorithm with O(n) time complexity but it's over my head at the moment.

[snip]
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.25.5554&rep=rep1&type=pdf

from the pdf, above, in case readers, like me, don't know the context of a Stable Partition implementation:

Stable minimum space partitioning
in linear time
Jyrki Katajainen1 and Tomi Pasanen2

Abstract.
In the stable 0-1 sorting problem the task is to sort an array of n elements with two distinct values such that equal elements retain their relative input order. Recently, Munro, Raman and Salowe [BIT 1990] gave an algorithm which solves
this problem in O(nlog*n)
3 time and constant extra space. We show that by a
modification of their method the stable 0-1 sorting is possible in O(n) time and O(1) extra space. Stable three-way partitioning can be reduced to stable 0-1 sorting. This immediately yields a stable minimum space quicksort, which sorts
multisets in asymptotically optimal time with high probability.
CR categories: E.5, F.2.2.

The stable 0-1 sorting problem is defined as follows: Given an array of n elements and a function f mapping each element to the set {0,1}, the task is to rearrange the elements such that all elements, whose f-value is zero, become before elements, whose f-value is one. Moreover, the relative order of elements with equal f-values should be maintained. For the sake of simplicity, we hereafter refer to bits instead of the f-values
of elements.

Stable partitioning is a special case of stable 0-1 sorting, where the f-values are
obtained by comparing every element xi
to some pivot element xj (which will not take part in partitioning):

Reply via email to