thrust::stable_sort
Defined in thrust/sort.h
-
template<typename DerivedPolicy, typename RandomAccessIterator, typename StrictWeakOrdering>
void thrust::stable_sort(const thrust::detail::execution_policy_base<DerivedPolicy> &exec, RandomAccessIterator first, RandomAccessIterator last, StrictWeakOrdering comp) stable_sort
is much likesort:
it sorts the elements in[first, last)
into ascending order, meaning that ifi
andj
are any two valid iterators in[first, last)
such thati
precedesj
, then*j
is not less than*i
.As the name suggests,
stable_sort
is stable: it preserves the relative ordering of equivalent elements. That is, ifx
andy
are elements in[first, last)
such thatx
precedesy
, and if the two elements are equivalent (neitherx < y
nory < x
) then a postcondition ofstable_sort
is thatx
still precedesy
.This version of
stable_sort
compares objects using a function objectcomp
.The algorithm’s execution is parallelized as determined by
exec
.The following code demonstrates how to sort integers in descending order using the greater<int> comparison operator using the
thrust::host
execution policy for parallelization:#include <thrust/sort.h> #include <thrust/functional.h> #include <thrust/execution_policy.h> ... const int N = 6; int A[N] = {1, 4, 2, 8, 5, 7}; thrust::sort(A, A + N, thrust::greater<int>()); // A is now {8, 7, 5, 4, 2, 1};
See also
sort
See also
stable_sort_by_key
- Parameters
exec – The execution policy to use for parallelization.
first – The beginning of the sequence.
last – The end of the sequence.
comp – Comparison operator.
- Template Parameters
DerivedPolicy – The name of the derived execution policy.
RandomAccessIterator – is a model of Random Access Iterator,
RandomAccessIterator
is mutable, andRandomAccessIterator's
value_type
is convertible toStrictWeakOrdering's
first_argument_type
andsecond_argument_type
.StrictWeakOrdering – is a model of Strict Weak Ordering.