버블 정렬

Coaspe·2021년 7월 2일
0

algorithm

목록 보기
7/10

버블정렬(셰이커 정렬, 기본)

from typing import MutableSequence

def bubble_sort(a: MutableSequence) -> None:
    n = len(a)
    for i in range(n-1):
        exchng = 0 # 정렬이 더 이상 필요하지 않을 수 있는 경우를 대비한다.
        for j in range(n-1, i, -1):
            if a[j-1] > a[j]:
                a[j-1], a[j] = a[j], a[j-1]
                exchng += 1
        if exchng == 0 :
            break

def shaker_bubble_sort(a: MutableSequence) -> None:
    left = 0
    right = len(a) - 1
    last = right
    while left < right:
        for j in range(right, left, -1):
            if a[j - 1] > a[j]:
                a[j - 1], a[j] = a[j], a[j - 1]
                last = j
        left = last

        for j in range(left, right):
            if a[j] > a[j + 1]:
                a[j], a[j + 1] = a[j + 1], a[j]
                last = j
        right = last
profile
https://github.com/Coaspe

0개의 댓글