Рубрики
Без рубрики

Пузырь

Сорта пузырьков является самым простым алгоритмом сортировки, сравнивает смежное значение и обменивается элементом на основе … Tagged с Python, Algorithms, DSA, учебным пособием.

Сорта пузырьков является самым простым алгоритмом сортировки, сравнивает смежное значение и обменивается элементом на основе условия. В сортировке восходящего порядка в основном то, что он делает, сравнивает два значения и изменяет положение, перечитывает ее через значения и поместите самое высокое значение в конце.

Для этого примера мы принимаем это значение в качестве ввода значений -> [6, 5, 3, 1, 8, 7]

Отслеживание

ЭТАП 1

Input
[6, 5, 3, 1, 8, 7]

compare position 0 and 1 values
---> 6>5 position 0 is greate than 1, swap it
[5, 6, 3, 1, 8, 7]

compare position 1 and 2 values
---> 6>3 position 1 is greate than 2, swap it
[5, 3, 6, 1, 8, 7]

compare position 2 and 3 values
--------> 6>1 position 2 is greate than 3, swap it
[5, 3, 1, 6, 8, 7]

compare position 3 and 4 values
--------> 6>8 position 3 is less than 4, no swap
[5, 3, 1, 6, 8, 7]

compare position 4 and 5 values
--------> 8>7 position 4 is greate than 5, swap it
[5, 3, 1, 6, 7, 8]

Значение последнего позиции 8 заблокировано

Этап 2

Input
[5, 3, 1, 6, 7]

compare position 0 and 1 values
--------> 5>3 position 0 is greate than 1, swap it
[3, 5, 1, 6, 7]

compare position 1 and 2 values
--------> 5>1 position 1 is greate than 2, swap it
[3, 1, 5, 6, 7]

compare position 2 and 3 values
--------> 5>6 position 2 is less than 3, no swap
[3, 1, 5, 6, 7]

compare position 3 and 4 values
--------> 6>7 position 3 is less than 4, no swap
[3, 1, 5, 6, 7]

Значение последнего позиции 7 заблокировано

Этап 3

Input
[3, 1, 5, 6]

compare position 0 and 1 values
--------> 3>5 position 0 is less than 1, no swap
[3, 5, 1, 6]

compare position 1 and 2 values
--------> 5>1 position 1 is greate than 2, swap it
[3, 1, 5, 6]

compare position 2 and 3 values
--------> 5>6 position 2 is less than 3, no swap
[3, 1, 5, 6]

Значение последнего позиции 6 заблокировано

Этап 4

Input
[3, 1, 5]

compare position 0 and 1 values
--------> 3>1 position 0 is greate than 1, swap it
[1, 3, 5]

compare position 1 and 2 values
--------> 3>1 position 1 is less than 2, no swap
[1, 3, 5]

Значение последнего позиции 5 заблокировано

Этап 5

Input
[1, 3]

compare position 0 and 1 values
--------> 3>1 position 0 is less than 1, no swap
[1, 3]

Значение последнего позиции 3 заблокировано

Сортированный результат 1, 3, 5, 6, 7, 8

def bubbleSort(k):
    last = 0
    for i in range(0,len(k)):
        # reduce the last value to avoid over lapping
        for j in range(0,len(k)-1-last):
            # compare the adjustent value
            if k[j] > k[j+1]:
                k[j], k[j+1] = k[j+1], k[j]

        last+=1
        print(k)
    return k

k = [3,40,2,0,10]
bubbleSort(k)

"""
result
[3, 2, 0, 10, 40]
[2, 0, 3, 10, 40]
[0, 2, 3, 10, 40]
[0, 2, 3, 10, 40]
[0, 2, 3, 10, 40]

[0, 2, 3, 10, 40]
"""

Другой метод

Если значения уже отсортированы или в середине процесса, если они отсортируются, вам не нужно делать процесс до конца. Мы можем остановить это, когда значения будут отсортированы.

def bubbleSort(k):
    last = 0
    for i in range(0,len(k)):
        # when the list is already sorted, its better to stop this will increase the process time
        done = True
        # reduce the last value to avoid over lapping
        for j in range(0,len(k)-1-last):
            # compare the adjustent value
            if k[j] > k[j+1]:
                k[j], k[j+1] = k[j+1], k[j]
                done = False
        if done:
            break
        last+=1
        print(k)
    return k

k = [3,40,2,0,10]
bubbleSort(k)

"""
result
[3, 2, 0, 10, 40]
[2, 0, 3, 10, 40]
[0, 2, 3, 10, 40]

[0, 2, 3, 10, 40]
"""

Вы можете увидеть разницу в результате первого метода, запускающегося до конца, во втором методе, как только список сортируется, он остановится.

Временные сложности

Bubble Sort имеет наихудшую и среднюю сложность O (N2), лучший случай O (n), если значения уже отсортированы.

Оригинал: “https://dev.to/magesh236/bubble-sort-in-python-4l2a”