Sortare rapida

Algoritmul de la Sortare rapida se bazeaza pe metoda Divide et impera.

Imparte: Sirul de pe pozitiile p...u este impartit (rearanjat) in doua siruri nevide de elemente. Elementele celor 2 subsiruri se gasesc pe pozitiile p...m si respectiv m+1...u. Primul sir are proprietatea ca fiecare element din primul sir este mai mic decat  orice element din al doilea sir.

Stapaneste: Cele doua siruri sunt ordonate prin apeluri succesive ale algoritmului de sortare rapida (quickSort)

Combina: Deoarece cele doua siruri sunt sortate pe loc, nu este nevoie de nicio ordonare.

#include <iostream.h>

int a[50],n,i;

void quickSort(int a[], int p, int u) {

   int i = p, j = u;

   int m;

   int pivot = a[(p + u) / 2];

   while (i <= j) {  

while (a[i] < pivot)

   i++;  

while (a[j] > pivot)

   j--;  

  if (i <= j)

  {

m=a[i];

a[i] =a[j];

a[j] = m;

   i++;  

   j--;  

  }  

  } 

  if (p < j)

quickSort(a, p, j);

  if (i < u)

quickSort(a, i, u);

  }  

void main()

{

 int n,i;

 

 cout<<endl<<endl;

 cout<<"n=";

 cin>>n;

 for(i=1;i<=n;i++)

 {

  cout<<"a["<<i<<"]=";cin>>a[i] ;

 }

 quickSort(a,1,n);

 cout<<endl;

 cout<<"Sirul sortat"<<endl;

 for(i=1;i<=n;i++)

cout<<a[i]<<" ";

counter for wordpress

View My Stats