Cod sursa(job #3133072)

Utilizator JohnnyFortaPascu Ioan JohnnyForta Data 25 mai 2023 01:36:26
Problema Sortare prin comparare Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <iostream>
#include <fstream>
#include <cstdlib>

using namespace std;

void swap(int &a, int &b){
    int aux = a;
    a = b;
    b = aux;
}

void quickSort(int v[], int start, int end){
    if(start >= end){
        return;
    }

    // srand(rand());
    int r = rand() % (end - start + 1) + start;

    swap(v[r],v[end]);

    int pivot = v[end], lastSmaller = start - 1, pointer;
    for(pointer = start; pointer <= end - 1; pointer++){
        if(v[pointer] < pivot){
            lastSmaller++;
            swap(v[lastSmaller], v[pointer]);
        }
    }
    lastSmaller++;
    swap(v[lastSmaller],v[end]);
    quickSort(v, start, lastSmaller - 1);
    quickSort(v, lastSmaller + 1, end);
}

int main(){
    ifstream in("algsort.in");
    ofstream out("algsort.out");
    int v[500000], n;
    in>>n;
    for(int i = 0; i < n; i++){
        in>>v[i];
    }
    quickSort(v, 0, n - 1);
    for(int i = 0; i < n; i++){
        out<<v[i]<<' ';
    }
    in.close();
}