niedziela, 28 października 2018

C - Algorytmy - Sortowanie przez wybor

Tym razem chciałbym krótko opisać algorytm sortowania przez wybór.

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

Program:


Zasada działania tego algorytmu jest dosyć prosta. Przechodzimy przez wszystkie elementy tablicy tak aby znaleźć kolejne najmniejsze elementy, które wprowadzamy w kolejne miejsca w tabeli.

  1. uint8_t selectionSort(uint16_t *list, uint16_t startPosition, uint16_t tableSize)
  2. {
  3.     uint16_t firstSearch = 0;
  4.     uint16_t secondSearch = 0;
  5.     uint16_t minimumSearchVal = 0;
  6.  
  7.     if (startPosition > tableSize)
  8.     {
  9.         return 1;
  10.     }
  11.  
  12.     for (firstSearch = startPosition; firstSearch < tableSize - 1; firstSearch++)
  13.     {
  14.         minimumSearchVal = firstSearch;
  15.         for (secondSearch = firstSearch + 1; secondSearch < tableSize; secondSearch++)
  16.         {
  17.             if (list[secondSearch] < list[minimumSearchVal])
  18.             {
  19.                 minimumSearchVal = secondSearch;
  20.             }
  21.         }
  22.         changeElementPlaces(&list[minimumSearchVal], &list[firstSearch]);
  23.     }
  24.     return 0;
  25. }
  26.  
  27. static void changeElementPlaces(uint16_t *xp, uint16_t *yp)
  28. {
  29.     uint16_t temp = *xp;
  30.     *xp = *yp;
  31.     *yp = temp;
  32. }

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