Sunteți pe pagina 1din 8

BUBBLE SORT

Realizat de Dombrovschi Iulia,Surdu Natalia


Metoda de sortare BubbleSort
Porneşte de la o proprietate evidentă a unui şir sortat:
oricare două elemente alăturate respectă relaţia de
ordine.
Astfel, dacă oricare pereche de elemente alăturate
respectă relaţia de ordine, atunci, conform tranzitivităţii
relaţiei, întreg şirul va fi ordonat.
Cele două elemente consecutive ale şirului de sortat vor
forma “bulele” pe care se va verifica relaţia de ordine
cerută.
Este cea mai simplă metodă de sortare şi nu necesită
cunoaşterea detaliată a limbajului de programare.
PREZENTAREA ALGORITMULUI:

Se parcurge vectorul de sortat şi se compară elementele consecutive. Dacă acestea nu se află în


ordinea dorită, se interschimbă.
Când se va ajunge la ultimul element al vectorului, parcurgerea se reia şi se vor verifica din nou
elementele vecine, cu realizarea interschimbărilor acolo unde sunt necesare, până când, la o ultimă
parcurgere nu mai este necesară nici o interschimbare, prin urmare, vectorul este ordonat.
Se va folosi o variabilă de tip logic, care va marca dacă la o parcurgere se fac interschimbări (se
iniţializează la începutul parcurgerii, iar dacă se face măcar o interschimbare, i se va schimba valoarea).
Algoritmul se opreşte atunci când această variabilă îşi păstrează valoarea primită la începutul parcurgerii
(nu au mai fost necesare interschimbări).
Se citeste un sir de numere intregi si se
cere sa se ordoneze elementele acestui sir
crescator

A: 7 , 4 , 5 , 3 , 9 , 1 (inainte)

A: 1 , 3 , 4 , 5 , 7 , 9 (dupa)

Ideea care sta la baza acestei metode este


urmatoarea: se parcurge sirul,
comparandu-se elementele consecutive
din sir doua cate doua. Daca acestea nu
sunt in relatia dorita se schimba valorile
elementelor.

PSEUDOCOD
#include<iostream>
using namespace std;
int main ()
{
int i, j,temp;
int a[10] = {10,2,0,14,43,25,18,1,5,45};
cout <<"Sirul: ";
for(i = 0; i<10; i++) {
cout <<a[i]<<" ";
}
cout<<endl;
for(i = 0; i<10; i++) {
for(j = i+1; j<10; j++)
{
if(a[j] < a[i]) {
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
cout <<"Sirul sortat: ";
for(i = 0; i<10; i++) {
cout <<a[i]<<"\t";
}
return 0;
}
Analiza complexității
algoritmului de sortare
cu bule
DIN PSEUDO-COD ȘI DIN ILUSTRAȚIA PE
CARE AM VĂZUT-O MAI SUS, ÎN SORTARE
CU BULE, FACEM COMPARAȚII N-1 ÎN
PRIMA TRECERE, COMPARAȚII N-2 ÎN A
DOUA TRECERE ȘI AȘA MAI DEPARTE.
PRIN URMARE, NUMĂRUL TOTAL DE
COMPARAȚII ÎN SORTAREA CU BULE ESTE:
SUMA = (N-1) + (N-2) + (N-3) +… + 3 + 2 + 1
= N (N-1) / 2
= O (N 2 ) => COMPLEXITATEA ÎN TIMP A
TEHNICII SORTĂRII CU BULE
ASTFEL, DIVERSELE COMPLEXITĂȚI PENTRU TEHNICA SORTĂRII CU BULE SUNT DATE MAI JOS:

COMPLEXITATEA TIMPULUI CEL MAI PROST


O (N 2)
COMPLEXITATEA ÎN CEL MAI BUN CAZ
PE)
COMPLEXITATEA MEDIE A TIMPULUI
O (N 2)
COMPLEXITATEA SPAȚIULUI
O (1)

CONCLUZIE

Principalul avantaj al sortării cu bule este


simplitatea algoritmului.La fiecare trecere, cel
mai mare element se ridică până la sfârșitul
listei dacă matricea este sortată în ordine
crescătoare.
În mod similar, pentru ca lista să fie sortată în
ordine descrescătoare, cel mai mic element
va fi la locul potrivit la sfârșitul fiecărei
treceri.
Fiind cea mai simplă și ușor de implementat
tehnica, sortarea cu bule este luată de obicei
pentru introducerea sortării către public. În al
doilea rând, sortarea cu bule este, de
asemenea, utilizată în aplicații precum grafica
computerizată.

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