sobota, 13 października 2018

C - Algorytmy - Sortowanie bąbelkowe

W tym poście chciałbym opisać algorytm sortowania bąbelkowego implementowany dla języka C.

[Źródło: https://icons.com/icon/40670/c-programming]

Program:


Ten rodzaj sortowania jest jednym z najprostszych dostępnych algorytmów sortowania. Jego działanie polega na pobieraniu kolejnych elementów z tablicy i zamienianie ich miejscami. Wszystkie operacje trwają do momentu kiedy nie zostaną dokonane żadne zmiany w tablicy.

Cały algorytm składa się właściwie z dwóch funkcji jedna zamienia elementy miejscami, druga natomiast wykonuje operacji na przekazanej tablicy.

  1. static void changeElementPlaces(uint16_t *xp, uint16_t *yp)
  2. {
  3.     uint16_t temp = *xp;
  4.     *xp = *yp;
  5.     *yp = temp;
  6. }
  7. void bubbleSort(uint16_t *list, uint16_t startPosition, uint16_t tableSize)
  8. {
  9.     uint16_t numberOfChanges = 0;
  10.     do
  11.     {
  12.         numberOfChanges = 0;
  13.         for (int i = startPosition; i < tableSize; i++)
  14.         {
  15.             if (list[i] > list[+ 1])
  16.             {
  17.                 numberOfChanges += 1;
  18.                 changeElementPlaces(&list[i], &list[+ 1]);
  19.             }
  20.         }
  21.     } while (numberOfChanges != 0);
  22. }

Pliki do postu można pobrać z dysku Google pod tym linkiem.