Quicksort In-Place

  • + 0 comments

    int partition(vector &arr, int low, int high){ int pivot = arr[high];

    int i = low;
    
    for(int j = low; j < high; j++){
        if(arr[j] <= pivot){
            swap(arr[i], arr[j]);
            i++;
        }
    }
    
    swap(arr[i], arr[high]);
    return i;
    

    }

    void quickSort(vector &arr, int low, int high){ if(low >= high || low < 0){ return; }

    int p = partition(arr, low, high);
    for(auto s : arr){
        cout << s << " ";
    }
    cout << endl;
    
    quickSort(arr, low, p - 1); // Left side of pivot
    quickSort(arr, p + 1, high); // Right side of pivot
    

    }

    int main() { int n; cin >> n;

    vector <int> arr(n);
    for(int i = 0; i < (int)n; ++i) {
        cin >> arr[i];
    }
    
    quickSort(arr, 0, arr.size()-1);
    
    return 0;
    

    }