Cod sursa(job #1745986)

Utilizator IaroslavIaroslav Mazur Iaroslav Data 22 august 2016 16:43:35
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.39 kb

//#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;
}