// Programm: bubblesort.h
// Sortieren eines Vektors von Zahlen mittels Bubblesort.
namespace ifet {
void bubble_sort(It b, It e)
// PRE: [b,e) ist ein gueltiger range.
// POST: Die Elemente in [b,e) sind aufsteigend sortiert.
{
// Wurden im aktuellen Durchlauf zwei Elemente getauscht?
bool swapped = true;
while (b != e && swapped) {
swapped = false;
It prev = b;
It cur = prev;
while (++cur != e) {
if (*cur < *prev) {
std::swap(*cur, *prev);
swapped = true;
}
prev = cur;
}
// Das letzte Element ist jetzt auf jeden Fall korrekt:
--e;
}
} // bubble_sort(b, e)
} // namespace ifet