Cod sursa(job #1815887)

Utilizator mdiannnaMarusic Diana mdiannna Data 25 noiembrie 2016 21:25:00
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.15 kb
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <stdio.h>

using namespace std;
int N;
int V[500000];

int random(int st, int dr){

    return rand() % (dr-st+1) + st;
}


void quicksort(int st, int dr){
    if(st >= dr)
        return;

      int r = random(st, dr);
   // cout << "r=" << r << endl;
    int p = V[r];
    //cout << "p=" << p << endl;

    int i = st;
    int j = dr;

    do{
        while(V[i] < p && i<dr )
            ++i;
        while(V[j] > p && j>st )
            --j;

        if(i<j){
            swap(V[i], V[j]);
             i++;
            j--;
        }


        //cout << "i=" << i << " j=" << j << endl;
    }
    while(i<j);

    i--;
    j++;

    quicksort(st, i);
    quicksort(j, dr);

    /*
    if(k<j)
        quicksort(st, j);
    else
        if(k>j)
            quicksort(i, dr);
    */

}


void afis(){
    for(int i=0; i<N; i++)
        cout << V[i] << " ";
    cout << endl;
}


int main(){
//freopen("algsort.in", "r", stdin);
//freopen("algsort.out", "w", stdout);


srand (time(NULL));
      cin >> N;
    for(int i=0; i<N; i++)
        cin >> V[i];

    quicksort(0, N-1);

    afis();
    return 0;
}