Javascript Python 버블 정렬 (Bubble Sort)

버블 정렬(거품 정렬, Bubble Sort)은 가장 간단한 정렬 알고리즘 입니다. 시간 복잡도는 O(n²)로 느립니다. Javascript(자바스크립트)와 Python(파이썬)으로 만들어 봤습니다.

Javascript 버블 정렬

기본적인 오름차순 정렬입니다.

function bubbleSort(ar) {
  for (var i = ar.length - 1; i > 0; i--) {
    for (var j = 0; j < i; j++) {
      if (ar[j] > ar[j+1]) {
        [ar[j], ar[j+1]] = [ar[j+1], ar[j]];
      }
    }
  }
}

var ar = [24, 55, -2, 100, 0, 1, 7];
bubbleSort(ar);
console.log(ar);
[-2, 0, 1, 7, 24, 55, 100]

Javascript 버블 정렬 - 비교함수 사용

비교함수를 인수로 전달하는 방식입니다. 내림차순으로 해봤습니다.

function bubbleSort(ar, compare) {
  for (var i = ar.length - 1; i > 0; i--) {
    for (var j = 0; j < i; j++) {
      if (compare(ar[j], ar[j+1]) > 0) {
        [ar[j], ar[j+1]] = [ar[j+1], ar[j]];
      }
    }
  }
}

var ar = [24, 55, -2, 100, 0, 1, 7];
bubbleSort(ar, (a, b) => b - a);
console.log(ar);
[100, 55, 24, 7, 1, 0, -2]

Python 버블 정렬

오름차순 정렬입니다.

def bubbleSort(ar):
  for i in range(len(ar) - 1, 0, -1):
    for j in range(i):
      if ar[j] > ar[j+1]:
        ar[j], ar[j+1] = ar[j+1], ar[j]

ar = [24, 55, -2, 100, 0, 1, 7]
bubbleSort(ar)
print(ar)
[-2, 0, 1, 7, 24, 55, 100]

Python 버블 정렬 - reverse 인수 사용

reverse 인수를 사용해서 내림차순으로 정렬했습니다.

def bubbleSort(ar, reverse=False):
  for i in range(len(ar) - 1, 0, -1):
    for j in range(i):
      cond = (ar[j] < ar[j+1]) if reverse else (ar[j] > ar[j+1])
      if cond:
        ar[j], ar[j+1] = ar[j+1], ar[j]

ar = [24, 55, -2, 100, 0, 1, 7]
bubbleSort(ar, reverse=True)
print(ar)
[100, 55, 24, 7, 1, 0, -2]