Algoritmul de sortare cu bule în C, Java și Python

Ultima actualizare: 30 de noviembre de 2025
  • Un algoritm simplu și stabil care sortează prin compararea și interschimbarea elementelor adiacente, ideal pentru învățarea noțiunilor fundamentale.
  • Complexitatea sa este O(n^2), deci este ineficientă pe mulțimi mari și efectuează multe comparații inutile.
  • A fost demonstrată implementarea sa în C, Java și Python; există alternative mai eficiente, cum ar fi quicksort și mergesort, pentru seturi de date mai mari.
Algoritmul de sortare cu bule

Algoritmul de sortare cu bule este unul dintre cei mai simpli și de bază algoritmi utilizați pentru sortarea elementelor dintr-o listă. Simplitatea sa îl face o alegere excelentă pentru înțelegerea conceptelor fundamentale ale algoritmilor de sortare. Acest algoritm este utilizat în mod obișnuit în aplicații și programe în care numărul de elemente care trebuie sortate este mic.

În acest articol, ne vom concentra pe implementarea algoritmului de sortare cu bule în două limbaje de programare populare: C și Java. Vom explora pașii necesari pentru implementarea acestui algoritm în fiecare dintre aceste limbaje, analizând codul sursă și oferind explicații detaliate.

Algoritmul de sortare cu bule în C și Java

Algoritmul de sortare cu bule, așa cum sugerează și numele, funcționează prin compararea perechilor de elemente adiacente dintr-o listă și efectuând schimburi dacă acestea sunt în ordinea greșită. Acest proces se repetă până când lista este complet sortată.

Cum funcționează algoritmul de sortare cu bule în C și Java?

Algoritmul de sortare cu bule urmează o abordare simplă, dar eficientă a sortării elementelor. Funcționarea generală a algoritmului este prezentată mai jos:

  1. Începem cu o listă neordonată de articole.
  2. Repetăm ​​lista, comparând fiecare pereche de elemente adiacente.
  3. Dacă elementele sunt în ordinea greșită, le schimbăm.
  4. Continuăm să repetăm ​​lista până când aceasta este complet sortată.
  5. Procesul de iterație se repetă de câte ori este necesar până când nu se mai fac schimburi într-o trecere completă.

Implementarea algoritmului de sortare cu bule în C

Mai jos, prezentăm implementarea algoritmului de sortare cu bule în limbajul C :

#include <stdio.h>

void bubbleSort(int array[], int size) {
    for (int i = 0; i < size - 1; i++) {
        for (int j = 0; j < size - i - 1; j++) {
            if (array[j] > array[j + 1]) {
                int temp = array[j];
                array[j] = array[j + 1];
                array[j + 1] = temp;
            }
        }
    }
}

int main() {
    int array[] = {64, 34, 25, 12, 22, 11, 90};
    int size = sizeof(array) / sizeof(array[0]);
    bubbleSort(array, size);
    printf("Array ordenado: ");
    for (int i = 0; i < size; i++) {
        printf("%d ", array[i]);
    }
    return 0;
}

În acest cod de algoritm cu bule, am definit o funcție numită bubbleSort care ia ca parametri o matrice și dimensiunea acesteia. Funcția realizează algoritmul de sortare cu bule folosind două bucle for. Prima buclă for iterează peste elementele matricei și a doua buclă for face comparatiile si schimburile necesare.

  8 fapte fascinante despre Samuel Morse

În sfârșit, în funcție main, am creat un exemplu de matrice și i-am calculat dimensiunea. Apoi numim functia bubbleSort trecând matricea și dimensiunea acesteia ca argumente. În cele din urmă, imprimăm matricea sortată pe ecran.

Implementarea algoritmului de sortare cu bule în Java

Mai jos prezentăm implementarea algoritmului de sortare cu bule în limbajul Java:

import java.util.Arrays;

public class BubbleSort {
    public static void bubbleSort(int[] array) {
        int size = array.length;
        for (int i = 0; i < size - 1; i++) {
            for (int j = 0; j < size - i - 1; j++) {
                if (array[j] > array[j + 1]) {
                    int temp = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = temp;
                }
            }
        }
    }

    public static void main(String[] args) {
        int[] array = {64, 34, 25, 12, 22, 11, 90};
        bubbleSort(array);
        System.out.println("Array ordenado: " + Arrays.toString(array));
    }
}

În acest cod, am definit o clasă numită BubbleSort. În această clasă, am declarat o metodă statică numită bubbleSort care ia ca parametru o matrice. Metoda bubbleSort realizează algoritmul de sortare cu bule folosind două bucle for, la fel ca în implementarea C.

în metodă main, am creat un exemplu de matrice și am numit metoda bubbleSort trecerea matricei ca argument. În cele din urmă, folosim Arrays.toString(array) pentru a imprima matricea sortată pe consolă.

Implementarea algoritmului de sortare cu bule în Python

Echivalentul algoritmului de sortare cu bule Python:

def bubble_sort(array):
    size = len(array)
    for i in range(size - 1):
        for j in range(size - i - 1):
            if array[j] > array[j + 1]:
                array[j], array[j + 1] = array[j + 1], array[j]

array = [64, 34, 25, 12, 22, 11, 90]
bubble_sort(array)
print("Array ordenado:", array)


 

Avantajele algoritmului de sortare cu bule

Algoritmul de sortare cu bule are câteva avantaje, cum ar fi:

  1. Ușura: Algoritmul de sortare cu bule este ușor de înțeles și implementat. Nu necesită cunoștințe complicate și este potrivit pentru începătorii în programare.
  2. Complexitate redusă a codului: Codul necesar pentru implementarea algoritmului de sortare cu bule este relativ scurt și concis. Acest lucru îl face o opțiune rapidă pentru sortarea unui număr mic de articole.

Dezavantajele algoritmului de sortare cu bule

În ciuda simplității sale, algoritmul de sortare cu bule are și câteva dezavantaje:

  1. Ineficiență în seturi mari de date: Algoritmul de sortare cu bule nu este eficient în ceea ce privește timpul de execuție atunci când se ocupă cu seturi mari de date. Complexitatea sa de timp este O(n^2), ceea ce înseamnă că timpul de execuție crește rapid pe măsură ce dimensiunea setului de date crește.
  2. Numărul de comparații: Algoritmul de sortare cu bule efectuează un număr mare de comparații, chiar și atunci când matricea este deja sortată. Acest lucru poate duce la pierderi inutile de performanță și resurse.
  Introducere în algoritmi: un ghid complet

Alternative la algoritmul de sortare cu bule

Pe măsură ce seturile de date devin mai mari și mai complexe, este important să se ia în considerare alternative mai eficiente la algoritmul de sortare cu bule. Unele dintre alternativele populare includ:

  1. Algoritm de sortare prin inserare: Acest algoritm împarte lista într-o parte ordonată și o parte neordonată și inserează fiecare element al piesei neordonate în poziția corectă în cadrul piesei ordonate. Are o complexitate de timp de O(n^2) în cel mai rău caz, dar este mai eficient decât algoritmul de sortare cu bule în majoritatea cazurilor.
  2. Algoritmul de sortare a selecției: Acest algoritm împarte lista într-o parte ordonată și o parte neordonată și selectează în mod repetat cel mai mic element din partea neordonată și îl plasează la sfârșitul piesei comandate. Are o complexitate de timp de O(n^2) în cel mai rău caz, dar este, de asemenea, mai eficient decât algoritmul de sortare cu bule în majoritatea cazurilor.

Întrebări frecvente despre algoritmul cu bule

1. Care este complexitatea în timp a algoritmului de sortare cu bule?

Algoritmul de sortare cu bule are o complexitate de timp de O(n^2), unde „n” este numărul de elemente care trebuie sortate. Aceasta înseamnă că timpul de rulare al algoritmului crește pătratic pe măsură ce dimensiunea listei crește.

2. Când este adecvat să folosiți algoritmul de sortare cu bule?

Algoritmul de sortare cu bule este potrivit atunci când lista de elemente de sortat este mică. Datorită complexității sale de timp, nu este recomandat pentru utilizare pe seturi mari de date, deoarece sunt disponibili algoritmi mai eficienți.

3. Algoritmul de sortare cu bule este stabil?

Da, algoritmul de sortare cu bule este un algoritm de sortare stabil. Aceasta înseamnă că menține ordinea relativă a elementelor cu chei egale în timpul procesului de sortare.

4. Care este cea mai bună alternativă la algoritmul de sortare cu bule?

Alegerea celei mai bune alternative la algoritmul de sortare cu bule depinde de context și de cerințele specifice ale problemei. Cu toate acestea, unii algoritmi mai eficienți, cum ar fi quicksort și mergesort , sunt utilizați pe scară largă datorită complexității lor temporale reduse.

  Importanța de a ști pentru ce este folosit un algoritm în secolul 21

5. Poate fi îmbunătățit algoritmul de sortare cu bule?

Da, există variante și optimizări ale algoritmului de sortare cu bule, cum ar fi „sortarea cu bule bidirecționale” și „sortarea cu bule îmbunătățită”. Aceste optimizări reduc numărul de comparații și numărul de iterații necesare pentru sortarea unei liste.

6. Unde pot găsi mai multe informații despre algoritmii de sortare?

Puteți găsi mai multe informații despre algoritmii de sortare în surse de încredere, cum ar fi Wikipedia. Iată câteva link-uri utile:

Concluzie

În acest articol, am explorat algoritmul de sortare cu bule în limbajele de programare C și Java. Am aflat cum funcționează acest algoritm pas cu pas și am văzut implementarea sa practică în ambele limbi. Am discutat, de asemenea, avantajele și dezavantajele algoritmului de sortare cu bule și am explorat alternative mai eficiente.

În timp ce algoritmul de sortare cu bule este simplu și ușor de implementat, este important să se ia în considerare eficiența sa pe seturi de date mai mari. În astfel de cazuri, este recomandabil să luați în considerare algoritmi de sortare mai eficienți, cum ar fi sortarea prin inserție sau sortarea prin selecție.

Sperăm că acest articol v-a oferit o înțelegere solidă a algoritmului de sortare cu bule.