Algoritmo de clasificación de burbujas, código python

Recomendación: Introducción a los diez algoritmos de clasificación clásicos principales , Introducción a la clasificación por burbujas

Implementación del código Python:

# 冒泡排序:升序
def bubbleSort(array: list) -> list:
    # i表示循环次数,与下标无关;j表示数组下标
    for i in range(1, len(array)):
        for j in range(0, len(array) - i):
            if array[j] > array[j + 1]:
                temp = array[j]
                array[j] = array[j + 1]
                array[j + 1] = temp
    return array

if __name__ == '__main__':
    array = [2, 4, 1, 6, 3, 5, 3, 6, 9, 2]
    print(bubbleSort(array))     # [1, 2, 2, 3, 3, 4, 5, 6, 6, 9]

Nota: Puede usar el método de intercambio de variables únicas en Python para realizar el intercambio de dos variables:

a, b = b, a     # a,b变量数值交换

Luego, el código de clasificación de burbujas se puede simplificar como:

# 冒泡排序:升序
def bubbleSort(array: list) -> list:
    # i表示循环次数,与下标无关;j表示数组下标
    for i in range(1, len(array)):
        for j in range(0, len(array) - i):
            if array[j] > array[j + 1]:
                array[j], array[j + 1] = array[j + 1], array[j]
    return array

if __name__ == '__main__':
    array = [2, 4, 1, 6, 3, 5, 3, 6, 9, 2]
    print(bubbleSort(array))    # [1, 2, 2, 3, 3, 4, 5, 6, 6, 9]

En general, la ordenación de burbujas requiere dos bucles for, por lo que la complejidad del tiempo es O(n 2 )

Pero en el mejor de los casos (es decir, la matriz ya está en orden), solo es necesario juzgar el tamaño sin realizar una operación de intercambio; en este momento, podemos establecer una variable de bandera en el ciclo para marcar si la operación de intercambio se ha realizado; si la primera Si la operación de intercambio no se realiza durante el bucle, significa que la matriz ya está en orden y puede saltar fuera del bucle. En este momento, solo se necesita un bucle for, y el la complejidad del tiempo es O(n)

Entonces, la complejidad temporal general de la clasificación de burbujas es O(n 2 ), el peor de los casos es O(n 2 ), el mejor de los casos es O(n)

Supongo que te gusta

Origin blog.csdn.net/qq_43799400/article/details/130877401
Recomendado
Clasificación