Jump to content

Metode De Sortare In C++


PaulL

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.

Link to comment
Share on other sites

  • Sortarea rapida Quickstart :))))) 

la restu dc nai dat exemple?

 

https://cs.uwaterloo.ca/~bwbecker/sortingDemo/

 

poate ajuta pe cineva :)

 

Nu am timp acum sa le scriu pe toate, o sa revin asupra lor.

 

Quickstart.. greseala mea. :))

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

Link to comment
Share on other sites

  • 1 year later...
  • Moderators

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>());
  • Upvote 1
Link to comment
Share on other sites

  • 7 years later...

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.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.