Was ist bei meinem Bubblesort falsch?

1 Antwort

  • Wenn du die ganze Liste durchlaufen willst und < testest, musst du nicht noch 1 von der Größe abziehen.
  • Die innere Schleife sollte nur bis j<i-1 gehen.
  • Die äußere Schleife sollte das Array rückwärts durchlaufen.

Anbei eine etwas angepasste Version, die auch std::vector verwendet, damit die array-Größe nicht separat übergeben werden muss.

void bubbleSort (std::vector < int >&array)
{
  for (int i = array.size (); i > 1; i--){
    bool swapped = false;
    for (int j = 0; j < i - 1; j++){
      if (array[j] > array[j + 1]){
        int temp = array[j];
        array[j] = array[j + 1];
        array[j + 1] = temp;
        swapped = true;
      }
    }
    if (!swapped){
      return;
    }
    swapped = false;
  }
}
LukasHaderer 
Fragesteller
 11.05.2021, 21:05

Ja danke ich verstehe es aber ich bräuchte es in C. Habs aber schon. Trotzdem danke.

0