Cod sursa(job #3263095)

Utilizator RaresAnghelAnghel Rares Mihai RaresAnghel Data 13 decembrie 2024 10:29:31
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <bits/stdc++.h>

using namespace std;
const string nume="algsort";
ifstream f(nume+".in");
ofstream g(nume+".out");
int part(int a[], int l, int r)
{
    int pivot = a[r];
    int i = l - 1;
    for (int j = l; j < r; j++) 
        if (a[j] <= pivot) 
        {
            i++;
            swap(a[i], a[j]);
        }
    swap(a[i + 1], a[r]);
    return i + 1;
}

void quicksort(int a[], int l, int r) 
{
    if (l < r) 
    {
        int p = part(a, l, r);
        if (p - l < r - p) 
        {
            quicksort(a, l, p - 1);
            l = p + 1;
        } 
        else 
        {
            quicksort(a, p + 1, r);
            r = p - 1;
        }
    }
}
int main()
{
    int n;
    f>>n;
    int a[n];
    for (int i = 0; i < n; i++)
        f>>a[i];
    quicksort(a, 0, n - 1);
    for (int i = 0; i < n;i++)
        g<<a[i]<<' ';
    return 0;
}