Cod sursa(job #1493108)

Utilizator deea101Andreea deea101 Data 28 septembrie 2015 18:56:26
Problema Sortare prin comparare Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include <iostream>
#include <vector>
#include <string>
using namespace std;

void merge_sort(vector <int> &v, vector <int> &temp, int l, int r) {
	if(r - l <= 1) return;
	int m = l + (r-l)/2;
	merge_sort(v, temp, l, m);
	merge_sort(v, temp, m, r);
	
	int i = l, j = m, k;
	
	for(k = l; k < r; k++)
		if(j == r || (i < m && v[i]<=v[j])) {
			temp[k] = v[i];
			i++;
		}
		else {
			temp[k] = v[j];
			j++;
		}
		
	for(k = l; k < r; k ++) 
		v[k] = temp[k];
}

void quick_sort(vector <int> &a, int l, int r) {
	if(r-l <= 1) return;
	
	int m = l + (r-l)/2;
	swap(a[l], a[m]);
	int i = l+1, j = r;
	while(i < j) 
		if(a[i] <= a[l])
			i++;
		else {
			j--;
			swap(a[i], a[j]);
		}
	swap(a[l], a[i-1]);
	
	quick_sort(a, l, i-1);
	quick_sort(a, i, r);
}
	
		
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");

int main() {
	
	int N, x, i;
	f>>N;
	vector <int> v, temp(N);
	while(N--) {
		f>>x;
		v.push_back(x);
	}
	quick_sort(v, 0, v.size());
	
	for(i=0; i<v.size(); i++) 
		g<<v[i]<<' ';
}