Sunteți pe pagina 1din 1

SORTAREA PRIN METODA BULELOR

 A sorta un tablou înseamnă a rearanja elementele tabloului astfel încât între acestea să existe o relaţie de
ordine (crescătoare sau descrescătoare)
 Prin această metodă se parcurge tabloul şi se compară fiecare element cu succesorul său. Dacă nu sunt în
ordine, cele două elemente se interschimbă între ele. Tabloul se parcurge de mai multe ori, până când, la o
parcurgere completă, nu se mai execută nicio interschimbare între elemente (adică tabloul este sortat).
 a – tabloul unidimensional;
 n – lungimea tabloului;
 aux – pentru interschimbul elementelor (de acelaşi tip cu elementele tabloului);
 i – contor (utilizat pentru parcurgerea tabloului);
 gasit – variabilă logică (se utilizează pentru a şti dacă s-a făcut cel puţin o operaţie de interschimbare la
parcurgerea tabloului).

1. Se iniţializează variabila gasit cu 1 (adică se presupune că şirul este sortat);


2. Se începe parcurgerea tabloului plecând de la i=0 (primul element al tabloului);
3. Se compară elementul a[i] cu elementul următor a[i+1]:
 Dacă a[i] > a[i+1] atunci se realizează interschimbul celor două elemente şi variabila gasit
primeşte valoarea 0;
4. Se trece la următoarea poziţie în tablou prin incrementarea lui i;
5. Se continua parcurgerea tabloului făcând comparaţiile necesare până când i ajunge la valoarea n-2;
6. Se reia algoritmul începând cu pasul 1 cât timp gasit=0,
7. Când gasit rămâne 1 atunci înseamnă că tabloul este sortat crescător (la ultima parcurgere nu s-a realizat
nici un interchimb de elemente).

Se dă un tablou a cu n elemente întregi. Să se realizeze sortarea crescătoare a elementelor tabloului.

#include <iostream>
using namespace std;
int main( ){
int n,i,a[100], aux,gasit; int n,i,a[100],aux,j;
int main ( )
{cout<<"n=";cin>>n;
for (i=0;i<n;i++)
cin>>a[i];

do{gasit=1;
for(i=0;i<n-1;i++) for(i=0;i<n-1;i++)
if (a[i]>a[i+1]){aux=a[i]; for(j=i+1;j<n;j++)
a[i]=a[i+1]; if (a[i]>a[j]){aux=a[i];
a[i+1]=aux; a[i]=a[j];
gasit=0;} a[j]=aux;}
}while(!gasit);

cout<<"sirul sortat este"<<endl;


for (i=0;i<n;i++)
cout<<a[i]<<" ";
return 0;}

S-ar putea să vă placă și