Cod sursa(job #2914136)

Utilizator Dennis_SoareDennis Soare Dennis_Soare Data 18 iulie 2022 22:06:01
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.3 kb
#include <bits/stdc++.h>

using namespace std;


void bubbleSort(vector<int>& v, int n) 
{ 
    int i, j; 
    for (i = 0; i < n - 1; i++) 
        for (j = 0; j < n - i - 1; j++) 
            if (v[j] > v[j + 1]) 
                swap(v[j], v[j + 1]); 
} 


void merge(vector<int> &v, int l, int m, int r){

    int i = l, j = m + 1, k = 0;
    vector<int> c(r-l+1);

    ///interclasare
    while(i <= m && j <= r) {

        if(v[i]<=v[j])
            c[k]=v[i++];
        else
            c[k]=v[j++];
        k++;
    }

    while(i<=m)
        c[k++]=v[i++];

    while(j<=r)
        c[k++]=v[j++];

    for (i = l, k = 0; i <= r; i++, k++)
        v[i] = c[k];
    c.clear();
}

void merge_sort(vector<int> &v, int l, int r) {

    if (l < r) {
        int m = l+(r-l)/2;
        merge_sort(v, l, m);
        merge_sort(v, m+1, r);

        merge(v, l, m, r);
    }
}



void algsort_infoarena()
{
    ifstream in("algsort.in");
    ofstream out("algsort.out");

    int n;
    in >> n;
    vector<int> v(n);
    for(int i=0; i<n; i++) {
        in >> v[i];
    }

    merge_sort(v, 0, n-1);

    for(int i=0; i<n; i++) {
        out << v[i]<< ' ';
    }

    in.close();
    out.close();
}

int main()
{
    algsort_infoarena();
    return 0;
}