Cod sursa(job #3031006)

Utilizator TirilaPatricTirila Patric-Gabriel TirilaPatric Data 18 martie 2023 11:22:18
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.38 kb
#include <iostream>
#include <vector>
#include <algorithm>
#include <random>
#include <ctime>
#include <ratio>
#include <chrono>
#include <fstream>

using namespace std;

int m3(vector<int> Vector, int left, int right) {
    int mid = (left + right) / 2;

    if (Vector[left] > Vector[mid])
        swap(Vector[left], Vector[mid]);

    if (Vector[mid] > Vector[right])
        swap(Vector[mid], Vector[right]);

    if (Vector[left] > Vector[right])
        swap(Vector[left], Vector[right]);


    swap(Vector[mid], Vector[right-1]);
    return Vector[right - 1];
}
int part2(vector<int>& Vector, int left, int right){
    int pivot = m3(Vector, left, right), j = left-1;
    for(int i=left;i<=right;i++) {
        if (Vector[i] <= pivot) {
            swap(Vector[j++], Vector[i]);
        }
    }

    return j;
}
void sortare(vector<int>& Vector, int left, int right){
    if (left<right){
        int index = part2(Vector, left, right);

        sortare(Vector, index+1, right);
        sortare(Vector, left, index-1);
    }
}

int main(){
    ifstream f("algsort.in");
    ofstream g("algsort.out");
    vector<int> V;
    int a, N;
    f>>N;
    while(N>0){
        f>>a;
        V.push_back(a);
        N--;
    }
    sortare(V, 0, V.size()-1);
    for(long unsigned int i=0; i<V.size(); i++){
        g<<V[i]<<" ";
    }
    return 0;
}