c++
int partition (vector<pair<bool,int> >&arr, int low, int high)
{
int pivot = arr[high].second; // pivot
int left = low;
int right = high - 1;
while(true){
while(left <= right && arr[left].second < pivot) left++;
while(right >= left && arr[right].second > pivot) right--;
if (left >= right) break;
swap(arr[left].second, arr[right].second);
left++;
right--;
}
swap(arr[left].second, arr[high].second);
return left;
}
void quickSort(vector<pair<bool,int> >&arr, int low, int high)
{
if (low < high)
{
int pi = partition(arr, low, high);
quickSort(arr, low, pi - 1);
quickSort(arr, pi + 1, high);
}
}
Public Last updated: 2021-10-07 09:10:50 AM