Cod sursa(job #3254654)

Utilizator ShadowZoidPorojan Victor-Andrei ShadowZoid Data 8 noiembrie 2024 12:39:35
Problema Sortare prin comparare Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
#include <fstream>
using namespace std;
ifstream cin("algsort.in");
ofstream cout("algsort.out");
int v[500005];
int n;

void QuickSort(int st, int dr)
{
    if(st < dr){
        //aleg V[st] pivot
        int mij=(st+dr)/2;
        swap(v[st],v[mij]);
        int i = st;
        int j = dr;
        int  mod = 0;//Modul 0: pivotul este v[i] si j=j-1,i=i+0
                     //Modul 1: pivotul este v[j] si i=i+1,j=j+0
        //mod = 1-mod; este instructiunea care schimba modul de lucru
        while(i < j)
        {
            if(v[i] <= v[j])
            {
                i = i+mod;
                j = j-(1-mod);
            }
            else
            {
                swap(v[i],v[j]);
                mod = 1- mod;
            }
        }
        //elementul pivot a fost plasat pe pozitia i
        QuickSort(st, i-1);
        QuickSort(i+1,dr);
    }
}
int main()
{
    cin >> n;
    for(int i = 1; i <= n; i++)
        cin >> v[i];
    QuickSort(1,n);

    for(int i = 1; i <= n; i++)
        cout << v[i] <<" ";
    return 0;
}