duminică, 9 martie 2014

Sortari

Principiile sortarii consta in ordonarea (crescatoare, descrescatoare)a unei multimi de elemente pentru a facilita cautarea ulterioara a unui element dat.

 1.Sortarea prin interschimbarea directa

Se da un sir:
x[1],x[2],..x[i],...x[j],..x[n]
Sortarea se realizeaza prin compararea unui pivot x[i] cu toate elementele aflate dupa el parcurgand tabloul intr-un ciclu cu contor.Daca conditia de comparare este satisfacuta se interschimba pivotul x[i] cu elementul x[l] care verifica aceasta conditie.
Interschimbarea se realizeaza prin metoda paharelor creindu-se o variabila aux=x[i]
Dupa ce toate elementele vectorului au fost pivoti, vectorul este in intregime sortat.

#include <iostream>
using namespace std;
int main()
{
   int j,n,i,x[100],temp;
    cout<<"Dati n : ";cin>>n;
    cout<<"Introduceti elementele vectorului\n";
    for (i=1;i<=n;i++)
    {
        cout<<"X["<<i<<"]=";cin>>x[i];//citire vector

    }
    for(i=1;i<n;i++)//interschimbare
       {for(j=i+1;j<=n;j++)
       if(x[j]<x[i])
       {
           temp=x[i];x[i]=x[j];x[j]=temp;}
       }
for (i=1;i<=n;i++)
    {cout<<x[i]<<" ";}//afisare vector sortat
}

2.Sortarea prin metoda Bulelor Buble Sort

se face prin compararea elementelor invecinate si schimbarea pozitiei lor astfel incat valorile mici sa se deplaseze la stanga, iar cele mari la dreapta in cazul sortarii crescatoare a unui vector si invers in sortarea descrescatoare. final este pozitia finala de parcurgere a vectorului.

#include <iostream>
using namespace std;
int main()
{
  int final,temp,n,i,x[100];
    cout<<"Dati n : ";cin>>n;
    cout<<"Introduceti elementele vectorului\n";
    for (i=1;i<=n;i++)
    {
        cout<<"X["<<i<<"]=";cin>>x[i];//citire vector

    }

    for(final=n;final>1;final--)//sortare vector
    for(i=1;i<final;i++)
    if(x[i]>x[i+1])
    {
        temp=x[i];x[i]=x[i+1];x[i+1]=temp;// interschimbare regula paharelor
    }
for (i=1;i<=n;i++)//afisare vector sortat
    {cout<<x[i]<<" ";}
}