1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
#include <stdlib/quicksort.h>
constexpr bool is_sorted_asc(int a[], size_t from, size_t to) {
for (; from < to - 1; ++from)
if (a[from] > a[from + 1]) return false;
return true;
}
constexpr bool is_sorted_desc(int a[], size_t from, size_t to) {
for (; from < to - 1; ++from)
if (a[from] < a[from + 1]) return false;
return true;
}
static_assert([]() {
int a[] = {12, 82, 347, 92, 74, 123, 0, 56};
const size_t a_len = sizeof(a) / sizeof(int);
qsort(a, 0, a_len - 1);
return is_sorted_asc(a, 0, a_len - 1);
}());
static_assert([]() {
int a[] = {12, 82, 347, 92, 74, 123, 0, 56};
const size_t a_len = sizeof(a) / sizeof(int);
qsort<int, SortOrder::Descending>(a, 0, a_len - 1);
return is_sorted_desc(a, 0, a_len - 1);
}());
|