Jump to content
Sign in to follow this  
PaulL

Metode De Sortare In C++

Recommended Posts

Prin metodele de sortare se reordoneaza elementele dupa un anumit criteriu in alte pozitii.

 

Ordonarile pot fii :

  • crescatoare
  • descrescatoare

Exista mai multe metode de sortare, cum ar fii :

  • Sortarea prin metoda bulelor
  • Sortarea prin minim sau maxim
  • Sortarea prin insertie
  • Sortarea prin interclasare
  • Sortarea rapida ( Quicksort )

1. Sortarea prin metoda bulelor

 

Pas 1 : Se citesc elementele vectorului

Pas 2 : Se executa cat timp se fac interschimbarile in vector

Pas 2.1 : Initializam variabila " gasit " cu valoarea fals

Pas 2.2 : Parcurgem vectorul de la primul pana la penultimul element

Pas 2.2.1 : Comparam elementul din pozitia i cu cel din pozitia i+1. Daca e mai mare se executa 

Pas 2.2.2 : Se interschimba cele doua valori

Pas 2.2.3 : Variabila " gasit " devine adevarat

Pas 3 : Se reia de la pasul 2 cat timp s-au facut interschimbarile

Pas 4 : Se afiseaza vectorul

 

--------------

#include <iostream.h>


int main()
{
int v[100],i,n,gasit,aux;
cout<<"n= ";cin>>n;
for(i=1;i<=n;i++)
{
   cout<<"v["<<i<<"]= ";
   cin>>v[i];
}


do
{
    gasit=0;
    for(i=1;i<=n;i++)
       if(v[i]>v[i+1])
  {
           aux=v[i];
           v[i]=v[i+1];
           v[i+1]=aux;
  gasit=1;
  }
}
while(gasit==1);
cout<<"Vectorul sortat este: ";
for(i=1;i<=n;i++)
cout<<v[i]<<" ";


return 0;
}

 

2. Sortarea prin minim sau maxim

 

Pas 1 : Se citeste vectorul

Pas 2 : Se parcurge vecorul de la prima pana la penultima pozitie ( 1 => n-1 )

Pas 2.1 : Se considera valoarea minima cea din pozitia i si se pastreaza valoarea intr-o variabila k

Pas 2.2 : Parcurgem de la elementul urmatorul pana la sfarsit si cautam valoarea minima

Pas 2.2.1 : Pastram valoarea nou gasita in variabila min si schimbam pozitia.

Pas 2.3 : Interschimbam cele 2 valori ( i cu k )

Pas 3 : Se reia de la pasul 2 pana la penultima valoare

Pas 4 : Se afiseaza vectorul

 

-------------

#include <iostream.h>

int main()
{
int v[100],i,n,min,k,aux,j;
cout<<"n= ";cin>>n;
for(i=1;i<=n;i++)
{	
   cout<<"v["<<i<<"]= ";
   cin>>v[i];
}

for(i=1;i<=n-1;i++)
{
	min=v[i];
	k=i;
	for(j=i+1;j<=n;j++)
		if(v[j]<min)
		{
			min=v[j];
			k=j;
		}
	aux=v[i];
	v[i]=v[k];
	v[k]=aux;
}
cout<<"Vectorul sortat este: ";
for(i=1;i<=n;i++)
	cout<<v[i]<<" ";

return 0;
}

 

3. Sortarea prin insertie

 

Aceasta metoda aseaza elementul citit pe pozitia lui finala in vector, comparandul cu valorile introduse deja si interschimbandul pana ajunge in pozitia corecta.

 

Pas 1 : Se citeste primul element

Pas 2 : De la al doilea pana la ultimul element se executa

Pas 2.1 : Se citeste un nou element

Pas 2.2 : Cat timp valoarea este mai mica decat cea din fata si n-am ajuns la primul element se executa

Pas 2.2.1 : Se interschimba elementul cu cel precedent 

Pas 2.2.2 : Se deplseaza cu o pozitie spre stanga

Pas 3 : Se reia de la pasul 2 pana se termina de citit vectorul

 

#include <iostream.h>

int main()
{
	int v[100],n,i,j,aux;
	cout<<"n= ";cin>>n;
	cout<<"v[1]= ";cin>>v[1];
	for(i=2;i<=n;i++)
	{
		cout<<"v["<<i<<"]= ";
		cin>>v[i];
	j=i;
	while(v[j]<v[j-1] && j>1)
	{
		aux=v[j];
		v[j]=v[j-1];
		v[j-1]=aux;
		j--;
	}
	}

cout<<"Vectorul sortat este: ";
for(i=1;i<=n;i++)
	cout<<v[i]<<" ";

return 0;
}

Pentru orice nelamurire, PM sau reply.

 

Scris de PaulL ( Paul Gabriel ) pentru PCTroubleshooting.ro.

Share this post


Link to post
Share on other sites

Folosiţi algorithm :))

#include <algorithm>
using namespace std;
int main (void)
{
    int v[8] = {639, 72, 834, 566, 708, 597, 68, 313};
    int numar_elemente = 8;

    sort(v, v + numar_elemente);

    return 0;
}

P.S. Dacă indecşii vectorului încep de la 1 la n (nu de la 0 la n-1 cum e normal de altfel), folosiţi

sort (v + 1 , v + numar_elemente + 1);

Pentru sortare descriescătoare, folosiţi

sort(v, v + numar_elemente, greater<int>());

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×