Cod sursa(job #3003482)

Utilizator willOcanaru Mihai will Data 15 martie 2023 19:15:55
Problema Sortare prin comparare Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.16 kb
#include <iostream>
#include <fstream>
#include <string.h>

using namespace std;

ifstream f("algsort.in");
ofstream g("algsort.out");

int v[500003]={0};
int a[500003]= {0};
int n;

void quicksort(int left, int right){
    
    if(left>=right) return;
    
    srand(time(NULL));
    int pivot = rand() % (right-left+1) + left;
    

    int index = left,last = right;
    
    
    for(int i=left;i<=right;i++){
        if(v[i] < v[pivot]){
            a[index++] = v[i];
        }
        else if(v[i] > v[pivot]){
            a[last--] = v[i];
            
        }
        else{
            if(v[i] == v[pivot] && i!=pivot){
                a[index++] = v[i];
            }
        }
    }
    
    a[index] = v[pivot];
    
    // for(int i=left;i<=right;i++){
    //     v[i] = a[i];
    // }
    
    memcpy(v+left, a+left, (right-left+1) * 4);
    
    
    quicksort(left,index-1);
    quicksort(index+1,right);

}


int main()
{
    int x;
    f>>n;
    
    
    for(int i=0;i<n;i++){
        f>>v[i];
    }

    quicksort(0,n-1);
    for(int i=0;i<n;i++){
        g<<v[i]<<" ";
    }
    

    return 0;
}