알고리즘

[JS] 버블 정렬

grin-quokka 2023. 2. 23. 16:00

JavaScript 알고리즘 & 자료구조 마스터클래스

버블정렬은 두 개씩 비교하면서 정렬하는 알고리즘입니다. 이 알고리즘은 비교적 간단하지만 큰 데이터셋을 정렬하는 데에는 효율적이지 않습니다. 따라서, 보통은 작은 데이터셋을 정렬하는 데 사용됩니다.

예시는 https://visualgo.net/en/sorting에서 확인할 수 있습니다. 이 웹사이트에서는 버블 정렬을 포함하여 다양한 정렬 알고리즘을 시각적으로 확인할 수 있습니다. 이를 통해 버블 정렬의 작동 방식을 더욱 자세히 이해할 수 있습니다.

 

 

버블 정렬을 자바스크립트로 구현한 코드는 아래와 같습니다.

function bubbleSort(arr){
  for(let i = arr.length; i > 0; i--){ // 제일 마지막부터 정렬되기 때문에
    noSwaps = true
    for(let j = 0; j < i - 1; j++){
      if(arr[j] > arr[j+1]){ // 두개를 비교해서 왼쪽이 더 크다면
        // swap
        [arr[j], arr[j+1]] = [arr[j+1], arr[j]]
        noSwaps = false
      }
    }
    // 한번도 바꾸지 않았다면 나머지는 이미 정렬되어 있음
    if(noSwaps) return arr
  }
  return arr // 정렬된 배열 리턴
}