środa, 3 sierpnia 2016

C - Sortowanie bąbelkowe

W tym poście chciałbym zaprezentować algorytm sortowanie bąbelkowego przygotowany w języku C.

Działanie tej metody polega na porównywaniu ze sobą dwóch liczb znajdującego się w ciągu znaków, z nich liczba mniejsza zostaje podstawiona pod niższą pozycję w tabeli a liczba większa pod pozycję o większym numerze. Poniżej krótka prezentacja:

tab[5] = 7;
tab[6] = 2;


Jeśli tab[5] jest większa od tab[6] to miejsce tab[6] zajmie liczba 7 a miejsce tab[5] przejdzie liczba 2. W następnym przejściu są ze sobą porównywane liczby na pozycji tab[6] oraz tab[7]. Algorytm działa, aż do momentu posortowania całego ciągu. 

Program


Poniżej implementacja algorytmu w języku C z niezbędnym komentarzem:

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6.     //Zmienne wykorzystywanie w programie
  7.     int tab[10] = {9,3,7,2,1,8,4,5,6,3};
  8.     int i = 0;
  9.     int pomocnicza = 0;
  10.     int czyposortowane = 0;
  11.  
  12.     //Wyswietlenie danych przed posortowaniem
  13.     printf("Tablica przed posortowaniem: \n");
  14.  
  15.     for(= 0; i<10; i++)
  16.     {
  17.         printf("Element %d wynosi %d \n", i, tab[i]);
  18.     }
  19.  
  20.     i = 0;
  21.  
  22.     //Sortowanie
  23.     do
  24.     {
  25.         //Zmienna utrzymująca program do momentu
  26.         //posortowania w petli
  27.         czyposortowane = 0;
  28.        
  29.         for(i=0; i<10; i++)
  30.         {
  31.             //Wpisanie zmiennych z pomoca
  32.             //zmiennej pomocniczej
  33.             if(tab[i]>tab[i+1])
  34.             {
  35.                 pomocnicza = tab[i];
  36.                 tab[i] = tab[i+1];
  37.                 tab[i+1] = pomocnicza;
  38.                 czyposortowane = 1;
  39.             }
  40.         }
  41.        
  42.     }while(czyposortowane != 0);
  43.  
  44.     //Wyswietlenie tablicy posortowanej
  45.     printf("\n Tablica po zastosowaniu sortowania: \n");
  46.  
  47.     for(i=0; i<10; i++)
  48.     {
  49.         printf("Element %d wynosi %d \n", i, tab[i]);
  50.     }
  51.     return 0;
  52. }