aboutsummaryrefslogtreecommitdiff
path: root/libk/test/quicksort.cc
blob: 7a25c081354a6695342d332f69f439c53d3a79cf (plain)
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);
}());