logo

Programa Python per a l'ordenació de bombolles

Bubble Sort és l'algorisme d'ordenació més senzill que funciona intercanviant repetidament els elements adjacents si estan en l'ordre incorrecte.

Programa Python per a l'ordenació de bombolles

El proporcionat Python El codi implementa l'algorisme Bubble Sort, que ordena una matriu comparant repetidament elements adjacents i intercanviant-los si estan en l'ordre incorrecte. L'algoritme itera a través de la matriu diverses vegades, amb cada passada empenyent l'element no ordenat més gran a la seva posició correcta al final. El codi inclou una optimització: si no es fan canvis durant una passada, la matriu ja està ordenada i el procés d'ordenació s'atura. L'exemple inicialitza una matriu, aplica la funció bubbleSort per ordenar-la i imprimeix la matriu ordenada. Després de l'ordenació, la sortida és: [11, 12, 22, 25, 34, 64, 90], indicant l'ordre ascendent.



Python 3
# Python program for implementation of Bubble Sort def bubbleSort(arr): n = len(arr) # optimize code, so if the array is already sorted, it doesn't need # to go through the entire process # Traverse through all array elements for i in range(n-1): # range(n) also work but outer loop will # repeat one time more than needed. # Last i elements are already in place swapped = False for j in range(0, n-i-1): # traverse the array from 0 to n-i-1 # Swap if the element found is greater # than the next element if arr[j]>arr[j + 1]: intercanviat = veritable arr[j], arr[j + 1] = arr[j + 1], arr[j] si no s'ha intercanviat: # si no hem de fer un sol intercanvi , només podem sortir del bucle principal. retornar # Codi del controlador per provar a sobre arr = [64, 34, 25, 12, 22, 11, 90] bubbleSort(arr) print('La matriu ordenada és:') per a i en rang(len(arr)): print('% d' % arr[i], final=' ')>

Sortida
Sorted array is: 11 12 22 25 34 64 90>

Complexitat temporal : O(n2).
Espai Auxiliar : O(1).

Consulteu l'article complet sobre Classificació de bombolles per a més detalls!

Python 3
def bubblesort(elements): # Looping from size of array from last index[-1] to index [0] for n in range(len(elements)-1, 0, -1): swapped = False for i in range(n): if elements[i]>elements[i + 1]: intercanviat = True # intercanvi de dades si l'element és inferior al següent element de la matriu elements[i], elements[i + 1] = elements[i + 1], elements[i] si no s'intercanvien : # sortint de la funció si no hem fet un sol intercanvi # significa que la matriu ja està ordenada. retornar elements = [39, 12, 18, 85, 72, 10, 2, 18] print('La llista no ordenada és,') print(elements) bubblesort(elements) print('La matriu ordenada és, ') print(elements)>>>  
Sortida Complexitat temporal : O(n2). Tanmateix, a la pràctica, aquesta versió optimitzada pot trigar menys temps, ja que quan la matriu s'ordena, la funció tornaria.
Espai Auxiliar : O(1).