Cod sursa(job #1508698)

Utilizator tudoras8tudoras8 tudoras8 Data 22 octombrie 2015 21:05:42
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.23 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <ctime>

using namespace std;

void quicksort(vector<int> &v, int l, int r) {
    if (l >= r) {
        return;
    }
    int p = v[l + rand() % (r - l + 1)];

    int i = l, j = r;
    do {
        while (v[i] < p) {
            ++i;
        }
        while (v[j] > p) {
            --j;
        }

        if (i <= j) {
            swap(v[i], v[j]);

            ++i;
            --j;
        }
    } while (i < j);

    quicksort(v, i, r);
    quicksort(v, l, j);
}

void bubblesort(vector<int> &v, int l, int r) {
    int swapped;

    do {
        swapped = 0;

        for (int i = l; i <= r - 1; ++i) {
            if (v[i] > v[i + 1]) {
                swap(v[i], v[i + 1]);
                swapped = 1;
            }
        }
    } while (swapped);
}

int main()
{
#ifdef LOCAL
    freopen("input", "r", stdin);
#else
    ifstream cin("algsort.in");
    ofstream cout("algsort.out");
#endif // LOCAL

    int n;
    vector<int> v;

    cin >> n;
    for (int i = 0; i < n; ++i) {
        int x;
        cin >> x;
        v.push_back(x);
    }

    srand(time(0));
    bubblesort(v, 0, n - 1);

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

    return 0;
}