Sortowanie bąbelkowe jest jednym z najprostszych algorytmów porządkujących dane. Jednak nie nadaje się do sortowania dużych zbiorów.
Nazwa wzięła się stąd, że dane podczas sortowania wartości - tak jak bąbelki w napoju gazowanym - przemieszczają się ku prawej stronie i układają się w odpowiednim szyku.
Implementacja algorytmu przedstawia się następująco:
include
Ten rodzaj sortowania możemy porównać do układania kart pokerzysty. Pierwszą kartę wstawiamy w odpowiednie miejsce przesuwając pozostałe, następną także wstawiamy między odpowiednie karty i tak układamy zestaw kart.
Prześledźmy przykład na następującym ciągu liczb: 2, 5, 3, 0, 7, 1 Strategia algorytmu:
Implementacja algorytmu przedstawia się następująco:
#include<iostream>
using namespace std;
void sortowanie_przez_wstawianie(int n, int *tab)
{
int pom, j;
for(int i=1; i<n; i++)
{
//wstawienie elementu w odpowiednie miejsce
pom = tab[i]; //ten element będzie wstawiony w odpowiednie miejsce
j = i-1;
//przesuwanie elementów większych od pom
while(j>=0 && tab[j]>pom)
{
tab[j+1] = tab[j]; //przesuwanie elementów
--j;
}
tab[j+1] = pom; //wstawienie pom w odpowiednie miejsce
}
}
int main()
{
int n, *tab;
cout<<"Podaj wielkość zbioru: ";
cin>>n;
tab = new int [n];
for(int i=0; i<n; i++)
{
cout<<"Podaj "<<i+1<<" element: ";
cin>>tab[i];
}
cout<<"Elementy przed sortowaniem:\n";
for(int i=0; i<n; i++)
cout<<tab[i]<<" ";
sortowanie_przez_wstawianie(n, tab);
cout<<"\nElementy posortowaniem:\n";
for(int i=0; i<n; i++)
cout<<tab[i]<<" ";
return 0;
}