Cod sursa(job #1721973)

Utilizator elena.marinicaMarinica Elena-Georgiana elena.marinica Data 26 iunie 2016 21:54:31
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <bits/stdc++.h>
using namespace std;
#define NMAX 500003

int v[NMAX];

void quick_sort(int v[], int lower, int upper) {

	if (lower < upper) {
		
		int mid = lower + (upper - lower) / 2;
		
		int piv = v[mid];
		std::swap(v[mid], v[upper]);
	
		int p = lower;
		int aux;
	
		for (int i = lower; i < upper; i++) {
		
			if (v[i] <= piv) 
				swap(v[p++], v[i]);
			
		}
	
		swap(v[upper], v[p]);
		
		quick_sort(v, p + 1, upper);
		quick_sort(v, lower, p - 1);
	
	}
}


int main() {
	
	FILE *fin = fopen("algsort.in", "r");
	FILE *fout = fopen("algsort.out", "w");
	
	int N;
	
	fscanf(fin, "%d", &N);
	
	for (int i = 1; i <= N; i++) {
		fscanf(fin, "%d", &v[i]);
	}
	
	quick_sort(v, 1, N );
	
	for (int i = 1; i <= N; i++) {
		fprintf(fout, "%d ", v[i]);
	}
	
	fclose(fin);
	fclose(fout);
	
}