Cod sursa(job #1458052)

Utilizator tony.hegyesAntonius Cezar Hegyes tony.hegyes Data 6 iulie 2015 12:05:08
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <fstream>
#include <iostream>
using namespace std;

///// DESCRIPTION
// THIS PROGRAM EMPLOYS QUICKSORT
// TO ORDER A LIST OF N ELEMENTS
// IN ASCENDING ORDER
/////

void qsort(int, int, int[]);

int main(int argc, char **argv)
{
	// INPUT
	ifstream indata("algsort.in");
	
	int n;
	indata >> n;
	
	int v[n];
	for (int i = 0; i < n; i++) {
		indata >> v[i];
	}
	
	indata.close();
	
	// SORT
	qsort(0, n-1, v);
	
	// OUTPUT
	ofstream outdata("algsort.out");
	for (int i = 0; i < n; i++) {
		cout << i << " ";
	}
	outdata.close();
	
	return 0;
}

void qsort(int ls, int ld, int v[]) {
	int middle = (ls + ld) / 2;
	int i = ls, j = ld;
	
	do {
		while (v[i] < v[middle]){
			i++;
		}
		while (v[j] > v[middle]) {
			j--;
		}
		
		if (i <= j) {
			int aux = v[i];
			v[i] = v[j];
			v[j] = aux;
			
			i++;
			j--;
		}
	} while (i < j);

	if (j > ls) {
		qsort(ls, j, v);
	}
	if (i < ld) {
		qsort(i, ld, v);
	}
}