Treceți la conținutul principal

Algoritmul de sortare al numerelor Bubble Sort

Limbajele de programare moderne au librarii extinse care implementează diversi algoritmi de sortare, căutare, calcule matematice, fiind ușor de folosit. Dar un programator la început de drum poate învața cum funcționează limbajul analizând  cum sunt implementați unii algoritmi. 


🧼 Cum functioneazã „Bubble Sort”?


Gândește-te că ai mai multe bile colorate cu numere scrise pe ele:
👉 4, 6, 5, 1, 3, 2

Le pui într-un rând și vrei să le așezi în ordine de la cel mai mic la cel mai mare.


🫧 Cum funcționează?

  1. Te uiți la primele două bile.
    Dacă prima e mai mare decât a doua, le schimbi locul.
    (Așa cum ai pune o bilă mai mare mai în spate.)
  2. Treci mai departe la următoarea pereche.
    Compari bilele 2 și 3, apoi 3 și 4, și tot așa.
    De fiecare dată, cea mai mare bilă „urcă” spre capătul rândului,
    la fel cum o bulă de aer urcă la suprafața apei — de aici și numele „Bubble Sort”!
  3. Când ai ajuns la finalul rândului, cea mai mare bilă e deja la locul ei.
    Acum reiei pașii pentru restul bilelor, dar fără ultima — că e deja sortată.
  4. Repeti până toate bilele sunt în ordine. 🎯






Iata o implementare a algoritmului Bubble Sort în limbajul C:

#include <stdio.h>

int main() {
    int n, i, j, temp;
    int arr[100]; // presupunem maxim 100 de numere

    printf("Cate numere doresti sa introduci? ");
    scanf("%d", &n);

    printf("Introdu cele %d numere:\n", n);
    for (i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }

    // sortare prin metoda bulelor (Bubble Sort)
    for (i = 0; i < n - 1; i++) {
        for (j = 0; j < n - i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }

    printf("Numerele sortate crescator sunt:\n");
    for (i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }

    return 0;
}

Si o reprezentare vizuală aici:



Puteti invata mai multe despre limbajul C din cartea 

O introducere în programarea C și a interfețelor grafice, disponibilă gratuit.


Comentarii

Trimiteți un comentariu

Postări populare de pe acest blog

O introducere în programarea C și a interfețelor grafice

Am început traducerea in limba  română  a cărții "An Introduction to C and GUI Programming" (2nd Edition), de  Simon Long,  actualizată pentru GTK 3. Cartea oferă o introducere completă în programarea C, de la concepte de bază până la crearea de aplicații grafice complexe folosind biblioteca GTK. O puteti accesa gratuit la aceasta adresa:  https://github.com/danadrianparaschiv/techlabjunior/tree/main/Introducere_programare_C_si_interfete_grafice Structura cărții Cartea este împărțită în două părți principale: Partea I: Programare C (Capitolele 1-12) Primele 12 capitole acoperă fundamentele limbajului C: Introducere  - Ce este C și de ce să-l învățați Variabile și aritmetica  - Tipuri de date și operații matematice Condiții și comparații  - Instrucțiuni if-else și bucle while Control avansat al fluxului  - Bucle for și instrucțiuni switch Pointeri  - Lucrul cu adrese de memorie Funcții  - Organizarea codului în funcții reutilizabile ...

Accesarea tablourilor în limbajul C

1. În C, un tablou este o zonă continuă de memorie care conține elemente de același tip. Exemplu: int v[5] = {10, 20, 30, 40, 50}; 2. Reprezentare în memorie Index Valoare Adresă (exemplu) v[0] 10 1000 v[1] 20 1004 v[2] 30 1008 v[3] 40 1012 v[4] 50 1016 Fiecare element ocupă 4 bytes (pentru tipul int). Adresa fiecărui element = adresa primului element + index * sizeof(int). 3. Diagramă vizuală (ASCII simplă) 4. Accesarea elementelor v[0] → primul element v[1] → al doilea element *(v + 1) → același lucru ca v[1] (folosind aritmetică de pointeri) De fapt, v[i] ≡ *(v + i) 5. Cod demonstrativ #include <stdio.h> int main() {     int v[5] = {10, 20, 30, 40, 50};     for (int i = 0; i < 5; i++) {         printf("v[%d] = %d, *(v + %d) = %d\n", i, v[i], i, *(v + i));     }     return 0; } Aflati mai multe din capitolul 7 al cărț...