Pagini recente » Cod sursa (job #974334) | Monitorul de evaluare | Cod sursa (job #1771575) | Cod sursa (job #2255921) | Cod sursa (job #1745986)
//#include "stdafx.h"
#include <fstream>
#include <iostream>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
int n;
int numbers[500000];
void quicksort(int l, int r)
{
int pivot = numbers[(l + r) / 2];
int i = l, j = r;
while (i <= j)
{
while (numbers[i] < pivot)
i++;
while (numbers[j] > pivot)
j--;
if (i <= j)
{
int temp = numbers[i];
numbers[i] = numbers[j];
numbers[j] = temp;
i++;
j--;
}
}
if (l < j)
quicksort(l, j);
if (i < r)
quicksort(i, r);
}
/*
void quickSort(int arr[], int left, int right) {
int i = left, j = right;
int tmp;
int pivot = arr[(left + right) / 2];
while (i <= j) {
while (arr[i] < pivot)
i++;
while (arr[j] > pivot)
j--;
if (i <= j) {
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
i++;
j--;
}
};
if (left < j)
quickSort(arr, left, j);
if (i < right)
quickSort(arr, i, right);
}*/
int main()
{
in >> n;
for (int i = 0; i <= n - 1; i++)
in >> numbers[i];
/*bool ok = 1;
while (ok)
{
ok = 0;
for (int i = 0; i <= n - 2; i++)
if (numbers[i] > numbers[i + 1])
{
int temp = numbers[i];
numbers[i] = numbers[i + 1];
numbers[i + 1] = temp;
ok = 1;
}
}*/
quicksort(0, n - 1);
for (int i = 0; i <= n - 1; i++)
{
out << numbers[i] << " ";
}
return 0;
}