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.


SUCCESS.The only place you'll find success before work it's in the dictionary.

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...