CUSP
Loading...
Searching...
No Matches
sort.h
Go to the documentation of this file.
1/*
2 * Copyright 2008-2014 NVIDIA Corporation
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
21#pragma once
22
23#include <cusp/detail/config.h>
24#include <cusp/detail/execution_policy.h>
25
26namespace cusp
27{
28
35/* \cond */
36template <typename DerivedPolicy,
37 typename ArrayType>
38void counting_sort(const thrust::detail::execution_policy_base<DerivedPolicy> &exec,
39 ArrayType& keys,
40 typename ArrayType::value_type min,
41 typename ArrayType::value_type max);
42/* \endcond */
43
92template <typename ArrayType>
93void counting_sort(ArrayType& keys,
94 typename ArrayType::value_type min,
95 typename ArrayType::value_type max);
96
97/* \cond */
98template <typename DerivedPolicy,
99 typename ArrayType1,
100 typename ArrayType2>
101void counting_sort_by_key(const thrust::detail::execution_policy_base<DerivedPolicy> &exec,
102 ArrayType1& keys,
103 ArrayType2& vals,
104 typename ArrayType1::value_type min,
105 typename ArrayType1::value_type max);
106/* \endcond */
107
163template <typename ArrayType1,
164 typename ArrayType2>
165void counting_sort_by_key(ArrayType1& keys,
166 ArrayType2& vals,
167 typename ArrayType1::value_type min,
168 typename ArrayType1::value_type max);
169
170
171/* \cond */
172template <typename DerivedPolicy,
173 typename ArrayType1,
174 typename ArrayType2,
175 typename ArrayType3>
176void sort_by_row(const thrust::detail::execution_policy_base<DerivedPolicy> &exec,
177 ArrayType1& row_indices,
178 ArrayType2& column_indices,
179 ArrayType3& values,
180 typename ArrayType1::value_type min_row = 0,
181 typename ArrayType1::value_type max_row = 0);
182/* \endcond */
183
228template <typename ArrayType1,
229 typename ArrayType2,
230 typename ArrayType3>
231void sort_by_row(ArrayType1& row_indices,
232 ArrayType2& column_indices,
233 ArrayType3& values,
234 typename ArrayType1::value_type min_row = 0,
235 typename ArrayType1::value_type max_row = 0);
236
237/* \cond */
238template <typename DerivedPolicy,
239 typename ArrayType1,
240 typename ArrayType2,
241 typename ArrayType3>
242void sort_by_row_and_column(const thrust::detail::execution_policy_base<DerivedPolicy> &exec,
243 ArrayType1& row_indices,
244 ArrayType2& column_indices,
245 ArrayType3& values,
246 typename ArrayType1::value_type min_row = 0,
247 typename ArrayType1::value_type max_row = 0,
248 typename ArrayType2::value_type min_col = 0,
249 typename ArrayType2::value_type max_col = 0);
250/* \endcond */
251
299template <typename ArrayType1,
300 typename ArrayType2,
301 typename ArrayType3>
302void sort_by_row_and_column(ArrayType1& row_indices,
303 ArrayType2& column_indices,
304 ArrayType3& values,
305 typename ArrayType1::value_type min_row = 0,
306 typename ArrayType1::value_type max_row = 0,
307 typename ArrayType2::value_type min_col = 0,
308 typename ArrayType2::value_type max_col = 0);
312} // end namespace cusp
313
314#include <cusp/detail/sort.inl>
315
void counting_sort(ArrayType &keys, typename ArrayType::value_type min, typename ArrayType::value_type max)
Use counting sort to order an array.
void sort_by_row_and_column(ArrayType1 &row_indices, ArrayType2 &column_indices, ArrayType3 &values, typename ArrayType1::value_type min_row=0, typename ArrayType1::value_type max_row=0, typename ArrayType2::value_type min_col=0, typename ArrayType2::value_type max_col=0)
Sort matrix indices by row and column.
void sort_by_row(ArrayType1 &row_indices, ArrayType2 &column_indices, ArrayType3 &values, typename ArrayType1::value_type min_row=0, typename ArrayType1::value_type max_row=0)
Sort matrix indices by row.
void counting_sort_by_key(ArrayType1 &keys, ArrayType2 &vals, typename ArrayType1::value_type min, typename ArrayType1::value_type max)
Use counting sort to order an array and permute an array of values.