parallel_sort

[algorithms.parallel_sort]

シーケンスをソートする関数テンプレート。


// <oneapi/tbb/parallel_sort.h> ヘッダーで定義 

namespace oneapi { 
    namespace tbb { 

        template<typename RandomAccessIterator> 
        void parallel_sort( RandomAccessIterator begin, RandomAccessIterator end ); 
        template<typename RandomAccessIterator, typename Compare> 
        void parallel_sort( RandomAccessIterator begin, RandomAccessIterator end, const Compare& comp ); 

        template<typename Container> 
        void parallel_sort( Container&& c ); 
        template<typename Container> 
        void parallel_sort( Container&& c, const Compare& comp ); 

    } // namespace tbb 
} // namespace oneapi

要件:

  • RandomAccessIterator タイプは、 [random.access.iterators] ランダム・アクセス・イテレーター要件、および [swappable.requirements] ISO C++ 標準の ValueSwappable 要件を満たす必要があります。

  • Compare タイプは、[alg.sorting] ISO C++ 標準の 比較 タイプの要件を満たしている必要があります。

  • Container タイプは、イテレーターが [random.access.iterators] の ランダム・アクセス・イテレーター 要件と [swappable.requirements] ISO C++ 標準の Swappable 要件を満たす、ContainerBasedSequence の要件を満たす必要があります。

  • 逆参照された RandomAccessIterator または Container イテレーターのタイプは、ISO C++ 標準の [moveassignable] セクションの MoveAssignable 要件と、ISO C++ 標準の [moveconstructible] セクションの MoveConstructible 要件を満たす必要があります。

シーケンスまたはコンテナーをソートします。ソートは不安定で再現性がありません。等しいキーの相対的な順序は保持されず、同じシーケンスを再度ソートした場合でも同じ結果になる保証はありません。

parallel_sort( begin, end, comp ) を呼び出すと、相対的な順序を決定するため引数 comp を使用して、シーケンス [begin, end) をソートします。comp( x, y )true を返す場合、x はソートされたシーケンスで y の前に現れます。

parallel_sort( begin, end ) 呼び出しは、parallel_sort( begin, end, comp )と同等であり、compoperator< を使用して相対的な順番を決定します。

parallel_sort( c, comp ) の呼び出しは、parallel_sort( std::begin(c), std::end(c), comp ) と同等です。

parallel_sort( c ) 呼び出しは、parallel_sort( c, comp )と同等であり、compoperator< を使用して相対的な順番を決定します。

複雑性

parallel_sort は、平均時間計算量 O(N×log(N)) の比較ソートです。ここで N はシーケンスの要素の数です。parallel_sort は実行時間を短縮するため同時に実行できます。