Cod sursa(job #611296)

Utilizator noobakafloFlorin eu noobakaflo Data 31 august 2011 17:51:29
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.22 kb
#include<iostream>
#include<fstream>
using namespace std;
fstream f("algsort.in",ios::in);
fstream g("algsort.out",ios::out);


void qSort(int v[], int stanga, int dreapta)
{
   int i, j, mijloc, aux;         // variabilele
   i=stanga;                       //  initializarea
   j=dreapta;                    //   indicilor
   mijloc=v[(stanga+dreapta)/2];  // initializarea variabilei - pivot
  while(i<=j)
  {
   while(v[i]<mijloc)  // apropierea i-ului de mijloc
      i++;
   while(v[j]>mijloc)   // apropierea j-ului de mijloc
      j--;
    if(i<=j)   //conditia efectuarii operatiei de interschimbare
    {
       aux=v[i];
       v[i]=v[j];   // operatia de interschimbare
       v[j]=aux;
       i++;
       j--;
     }
  }                    
 if(stanga<j)                    //recursivitatea            
   qSort(v, stanga, j);   // in partea stanga    
 if(i<dreapta)                    
   qSort(v, i, dreapta);  // in partea dreapta
 
}



int main()
{
	int n,v[500000],i,stanga,dreapta;
	//Citirea sirului din fisier 
	f>>n;
	for (i=0; i<n; i++)
		f>>v[i];

	qSort(v,0,n-1);

	//Scrierea sirului in fisier
	for (i=0; i<n; i++)
		g<<v[i]<<" ";
    
	f.close(); g.close();
	return 0;
}