이름의 유래로는 정렬 과정에서 원소의 이동이 거품이 수면으로 올라오는 듯한 모습을 보이기 때문에 지어졌다고 한다.
일단 구현이 쉽다. Bubble정렬은 인접한 값만 계속해서 비교하면 되는 방식으로 굉장히 구현이 쉬운 편이다.
코드 자체가 직관적이다.
굉장히 비효율적이다. 최악이든 최선이든 O(N^2) 이라는 시간복잡도를 갖기 때문에 사실 알고리즘에서 효율적인
정렬방법으로 사용되지는 않는다.
# 버블 정렬의 범용성을 높이기 위해 함수로 만듬
def bubbleSort(arr):
n = len(arr) # 배열의 크기를 측정
# 배열의 크기만큼 반복
for i in range(n):
# 배열의 총 크기에서 i의 값과 1을 뺀 만큼 반복
for j in range(0, n - i - 1):
# 만약 현재 인덱스의 값이 다음 인덱스의 값보다 클경우 실행
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j] # 서로 위치를 변환
# 예시 배열
arr = [64, 34, 25, 12, 57, 93, 1, 123]
bubbleSort(arr)
def bubble_sort(arr):
for i in range(len(arr) - 1, 0, -1):
swapped = False
for j in range(i):
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
swapped = True
if not swapped:
break
def bubble_sort(arr):
end = len(arr) - 1
while end > 0:
last_swap = 0
for i in range(end):
if arr[i] > arr[i + 1]:
arr[i], arr[i + 1] = arr[i + 1], arr[i]
last_swap = i
end = last_swap
https://velog.io/@gillog/%EB%B2%84%EB%B8%94-%EC%A0%95%EB%A0%ACBubble-Sort
https://yabmoons.tistory.com/250
https://www.daleseo.com/sort-bubble/