Sortarea prin metoda bulelor

          Acest algoritm se mai numeste si "sortarea prin selectie si interschimbare" , "sortarea prin propagare" sau "metoda lenta de sortare" datorita numarului mare de operatii care trebuie efectuate. Scuccesul algoritmului este asigurat de trecerea succesiva prin tablou, pina cind acesta este sortat, cu specificatia ca la fiecare trecere elementele succesive i si i+1 pentru care a[i]>a[i+1], vor fi interschimbate.

          Metoda poate fi imbunatatita daca dupa fiecare trecere se va retine ultima pozitie din tablou in care a avut loc o interschimbare, iar trecerea urmatoare se va efectua doar pina la acea pozitie. In cazul in care la o trecere nu a avut loc nici o interschimbare algoritmul se va incheia.

          Pentru o si mai buna optimizare se poate inclocui trecerea prin tablou intr-un sens cu trecerea in dublu sens. In acest caz daca la doua treceri succesive intre doua elemente i si i+1 nu a avut loc o interschimbare atunci cu siguranta nici la trecereile urmatoare nu se vor inregistra interschimbari.

          Cu toate optimizarile aduse acestei sortari prin metoda bulelor aceasta se ddovedeste a fi cu mult mai lenta decit sortarea prin insertie, totusi ea a stat la baza altor algoritmi de sortare mai performanti. Ea este deasemenea foarte indragita de programatori datorita simplitatii, ce nu ridica probleme de implementare.

#include<stdio.h>;

void main()

{

int i,aux,terminat;a[50]

for(i=0;i<=10;i++)

          {

          printf("dati a[%d] ",i);

          scanf("%d",&a[i]);

          }

terminat=0;

while(!terminat)

          {

             terminat=1;

             for(i=0;i<10;i++)

                if(a[i]>a[i+1])

                    {

                    aux=a[i];

                    a[i]=a[i+1];

                    a[i+1]=aux;

                    terminat=0;

                    };

           }

for(i=0;i<=10;i++)

printf("%d  ",a[i]);

}