#include
#include
#include
int counter;
void quick_sort(std::vector arr, int S, int E) {
int i = S, j = E;
int pivotal = arr[(S + E) / 2];
while(i <= j) {
while(arr[i] < pivotal) {
counter++;
i++;
}
while(arr[j] > pivotal) {
counter++;
j--;
}
if(i <= j) {
counter++;
std::swap(arr[i], arr[j]);
i++;
j--;
}
counter++;
}
if(S < j) {
counter++;
quick_sort(arr, S, j);
}
if(i < E) {
counter++;
quick_sort(arr, i, E);
}
}
int main()
{
std::ios_base::sync_with_stdio(0);
// 1, 2, 3, 4, 5, 6, 7
// 5, 4, 3, 2, 1, 6, 7
std::vector v{1, 2, 3, 4 ,5 ,6, 7};
int maks= 0;
do{
counter = 0;
std::vector v2 = v;
quick_sort(v2, 0, 6);
if(counter == 37) {
for(int j = 0; j < 7; j++) {
std::cout << v[j] << " ";
}
std::cout << std::endl;
}
}while(std::next_permutation(v.begin(), v.end()));
return 0;
}