thrust::stable_sort
Defined in thrust/sort.h
-
template<typename DerivedPolicy, typename RandomAccessIterator>
void thrust::stable_sort(const thrust::detail::execution_policy_base<DerivedPolicy> &exec, RandomAccessIterator first, RandomAccessIterator last) stable_sortis much likesort:it sorts the elements in[first, last)into ascending order, meaning that ifiandjare any two valid iterators in[first, last)such thatiprecedesj, then*jis not less than*i.As the name suggests,
stable_sortis stable: it preserves the relative ordering of equivalent elements. That is, ifxandyare elements in[first, last)such thatxprecedesy, and if the two elements are equivalent (neitherx < ynory < x) then a postcondition ofstable_sortis thatxstill precedesy.This version of
stable_sortcompares objects usingoperator<.The algorithm’s execution is parallelized as determined by
exec.The following code snippet demonstrates how to use
sortto sort a sequence of integers using thethrust::hostexecution policy for parallelization:#include <thrust/sort.h> #include <thrust/execution_policy.h> ... const int N = 6; int A[N] = {1, 4, 2, 8, 5, 7}; thrust::stable_sort(thrust::host, A, A + N); // A is now {1, 2, 4, 5, 7, 8}
See also
sortSee 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.
- Template Parameters
DerivedPolicy – The name of the derived execution policy.
RandomAccessIterator – is a model of Random Access Iterator,
RandomAccessIteratoris mutable, andRandomAccessIterator'svalue_typeis a model of LessThan Comparable, and the ordering relation onRandomAccessIterator'svalue_typeis a strict weak ordering, as defined in the LessThan Comparable requirements.