Cod sursa(job #2442748)

Utilizator CiobaCatalinCioba Catalin CiobaCatalin Data 25 iulie 2019 11:00:09
Problema Sortare prin comparare Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.03 kb
#include <fstream>
#include <iostream>

using namespace std;

void swap(int * arr, int l, int r)
{
    int tmp = arr[l];
    arr[l] = arr[r];
    arr[r] = tmp;
}

int partition(int * arr, int start, int end)
{
    int pivot = arr[start];
    int idx = start + 1;

    for (int i = start + 1; i <= end; i++)
    {
        if (arr[i] < pivot) {
            swap(arr, idx++, i);
        }
    }

    swap(arr, idx - 1, start);

    return idx - 1;
}

void quicksort(int * arr, int start, int end)
{
    if (start < end) {
        int pivot = partition(arr, start, end);

        quicksort(arr, start, pivot - 1);
        quicksort(arr, pivot + 1, end);
    }
}

int main() 
{
    ifstream fin("algsort.in");
    ofstream fout("algsort.out");

    int n;
    fin >> n;

    int *arr = new int[n];

    for (int i = 0; i < n; i++) 
    {
        fin >> arr[i];
    }

    quicksort(arr, 0, n - 1);

    for (int i = 0; i < n; i++)
    {
        //printf("%d ", arr[i]);
        fout << arr[i] << " ";
    }

    fin.close();
    fout.close();

    return 0;
}