int partition(vector<int> &v, int left, int right)
{
int pivot = v[left];
while(left < right){
while(left < right && v[right] > pivot) right--;
v[left++] = v[right];
while(left < right && v[left] < pivot) left++;
v[right--] = v[left];
}
v[left] = pivot;
return left < right ? left : right;
}
void quicksort(vector<int> &v, int left, int right)
{
if(left < right){
int nn = partition(v, left, right);
quicksort(v, left, nn);
quicksort(v, nn + 1, right);
}
}
void quick_sort3(uint32_t *data, int left, int right)
{
int i = left, j = right;
int tmp;
int pivot = data[(left + right) / 2];
while(i <= j) {
while (data[i] < pivot) i++;
while (data[j] > pivot) j--;
if(i <= j) {
tmp = data[i];
data[i++] = data[j];
data[j--] = tmp;
}
for(int t = left; t <= right; t++) {
std::cout << data[t] << " ";
}
std::cout << std::endl;
};
if (left < j) quick_sort3(data, left, j);
if (i < right) quick_sort3(data, i, right);
}