algorithm quicksort(A, lo, hi) is if lo < hi then p := partition(A, lo, hi) quicksort(A, lo, p) quicksort(A, p + 1, hi) */
| 85 | |
| 86 | */ |
| 87 | result<void> quick_sort(executor_tag, std::shared_ptr<thread_pool_executor> tp, int* a, int lo, int hi) { |
| 88 | if (lo >= hi) { |
| 89 | co_return; |
| 90 | } |
| 91 | |
| 92 | const auto p = partition(a, lo, hi); |
| 93 | auto res0 = quick_sort({}, tp, a, lo, p); |
| 94 | auto res1 = quick_sort({}, tp, a, p + 1, hi); |
| 95 | |
| 96 | co_await res0; |
| 97 | co_await res1; |
| 98 | } |