| C++ | PHP |Forum |
| AKTUALNO¦CI | ARTYKUŁY | FORUM | PLIKI | PORADY |
Koderzy.pl » C++ » Artykuły » Algorytmy » Sortowanie b±belkowe
Twoje konto

auto ukryj
Losowe porady
Buttony
koderzy.pl
xhtml
css


15 kwietnia 2005 20:11 Sortowanie b±belkowe Sortowanie b±belkowePaweł Gniadkowski [Kardon]
Algorytm sortowania b±belkowego jest bardzo prosty. Polega on na porównywaniu ze sob± par liczb oraz w razie potrzeby ich zamienianiu.

Przykładowo:
sortujemy liczby: 12 5 19 2 4 1 krok >> porównujemy parę 12 5 >> zamieniamy miejscami 1 krok >> otrzymujemy: 5 12 19 2 4 2 krok >> porównujemy parę 12 19 >> nie zamieniamy 2 krok >> otrzymujemy: 5 12 19 2 4 3 krok >> porównujemy parę 19 2 >> zamieniamy miejscami 3 krok >> otrzymujemy: 5 12 2 19 4 4 krok >> porównujemy parę 19 4 >> zamieniamy miejscami 4 krok >> otrzymujemy: 5 12 2 4 19 5 krok >> ZACZYNAMY OD POCZˇTKU (bo dokonali¶my 3 zamiany) 5 krok >> porównujemy parę 5 12 >> nie zamieniamy 5 krok >> otrzymujemy: 5 12 2 4 19 6 krok >> porównujemy parę 12 2 >> zamieniamy miejscami 6 krok >> otrzymujemy: 5 2 12 4 19 7 krok >> porównujemy parę 12 4 >> zamieniamy miejscami 7 krok >> otrzymujemy: 5 2 4 12 19 8 krok >> porównujemy parę 12 19 >> nie zamieniamy 8 krok >> otrzymujemy: 5 2 4 12 19 9 krok >> ZACZYNAMY OD POCZˇTKU (bo dokonali¶my 2 zamian) 9 krok >> porównujemy parę 5 2 >> zamieniamy miejscami 9 krok >> otrzymujemy: 2 5 4 12 19 10 krok >> porównujemy parę 5 4 >> zamieniamy miejscami 10 krok >> otrzymujemy: 2 4 5 12 19 11 krok >> porównujemy parę 5 12 >> nie zamieniamy 11 krok >> otrzymujemy: 2 4 5 12 19 12 krok >> porównujemy parę 12 19 >> nie zamieniamy 12 krok >> otrzymujemy: 2 4 5 12 19 13 krok >> ZACZYNAMY OD POCZˇTKU (bo dokonali¶my 2 zamian) 13 krok >> porównujemy parę 2 4 >> nie zamieniamy 13 krok >> otrzymujemy: 2 4 5 12 19 14 krok >> porównujemy parę 4 5 >> nie zamieniamy 14 krok >> otrzymujemy: 2 4 5 12 19 15 krok >> porównujemy parę 5 12 >> nie zamieniamy 15 krok >> otrzymujemy: 2 4 5 12 19 16 krok >> porównujemy parę 12 19 >> nie zamieniamy 16 krok >> otrzymujemy: 2 4 5 12 19 17 krok >> KONIEC ALGORYTMU (bo nie musieli¶my dokonywać zamian)
Musieli¶my dokonać 4 pełnych przej¶ć. Za każdym razem porównywali¶my kolejne pary liczb ze sob±. W ostatnim przej¶ciu (4) nie dokonali¶my żadnej zamiany, a więc tablica była już posortowana.

Algorytm w C++ wygl±da następuj±co:
#include <iostream> using namespace std; // procedura sortujaca tablice void bubble(int *tabl, int n, bool *zmiana) { int temp; for (int i=0;i<n-1;i++) { if (tabl[i]>tabl[i+1]) { temp = tabl[i]; tabl[i] = tabl[i+1]; tabl[i+1] = temp; *zmiana=true; } } } int main() { int n; bool zmiana; cout << "Ile liczb mam posortowac?\n"; cin >> n; int tabl[n]; // pobieranie danych: for (int i=0;i<n;i++) { cout << "\nPodaj " << i+1 << " liczbe: "; cin >> tabl[i]; } cout << "\n\n"; // glowna petla sortujaca do { zmiana = false; bubble(tabl,n,&zmiana); } while (zmiana==true); // wypisywanie danych for (int i=0;i<n;i++) { cout << tabl[i] << " "; } }

© 2010 - Grupa BBN - wszelkie prawa zastrzeżone.
.