12#include "detray/definitions/detail/qualifiers.hpp"
13#include "detray/utils/find_bound.hpp"
14#include "detray/utils/ranges/detail/iterator_functions.hpp"
20namespace detray::detail {
22template <std::random_access_iterator RandomIt>
23DETRAY_HOST_DEVICE
inline void insertion_sort(RandomIt first, RandomIt last) {
24 for (
auto it = first; it !=
last; it++) {
27 auto const insertion_point = detray::detail::upper_bound(first, it, *it);
30 std::ranges::rotate(insertion_point, it, it + 1);
35template <
template <
typename...>
class vector_t,
typename TYPE>
36DETRAY_HOST_DEVICE
inline void insertion_sort(vector_t<TYPE> &vec) {
37 detray::detail::insertion_sort(vec.begin(), vec.end());
40template <std::random_access_iterator RandomIt,
class Comp = std::less<
void>>
41DETRAY_HOST_DEVICE
inline void selection_sort(RandomIt first, RandomIt last,
42 Comp &&comp = Comp()) {
43 for (RandomIt i = first; i < (
last - 1); ++i) {
46 for (RandomIt j = i + 1; j <
last; ++j) {
61template <
template <
typename...>
class vector_t,
typename TYPE>
62DETRAY_HOST_DEVICE
inline void selection_sort(vector_t<TYPE> &vec) {
63 detray::detail::selection_sort(vec.begin(), vec.end());
@ last
Use the last track state to reach target surface.
Definition TrackHelpers.hpp:41