31 #ifndef ACE_SORTING_QUICK_SORT_H
32 #define ACE_SORTING_QUICK_SORT_H
36 namespace ace_sorting {
51 T pivot = data[n / 2];
53 T* right = data + n - 1;
55 while (left <= right) {
58 }
else if (*right > pivot) {
90 if (data[0] > data[n - 1]) {
91 swap(data[0], data[n - 1]);
93 if (data[0] > pivot) {
95 }
else if (pivot > data[n - 1]) {
100 T* right = data + n - 1;
102 while (left <= right) {
105 }
else if (*right > pivot) {
127 template <
typename T>
133 uint16_t mid = n / 2;
135 if (data[0] > data[n - 1]) {
136 swap(data[0], data[n - 1]);
138 if (data[0] > pivot) {
139 swap(data[0], data[mid]);
140 }
else if (pivot > data[n - 1]) {
141 swap(data[mid], data[n - 1]);
147 T* right = data + n - 2;
149 while (left <= right) {
152 }
else if (*right > pivot) {