요약

  • 인접한 두 요소를 비교하여 정렬이 완료될 때까지 반복하는 알고리즘이다.

내용

원리

  • 인접한 두 요소를 비교하여 정렬이 완료될 때까지 반복한다.
  • 큰 값이 배열이 끝으로 “거품”처럼 이동하기 때문에 버블 정렬이라고 불린다.
    • 물 속의 공기가 물 표면 위로 떠오르는것 처럼 올라가기 때문이다.

시간 복잡도

  • 최악 및 평균
    • O(n^2)
  • 최선은 이미 정렬된 경우
    • O(n)

장점

  • 구현이 간단하다
  • 데이터 양이 적거나 거의 정렬된 경우 유리하다

단점

  • 다른 정렬 알고리즘에 비해 속도가 느리고 효율이 낮다.

구현체

package main
 
import "fmt"
 
func bubbleSort(arr []int) {
	n := len(arr)
	for i := 0; i < n-1; i++ {
		for j := 0; j < n-i-1; j++ {
			if arr[j] > arr[j+1] {
				arr[j], arr[j+1] = arr[j+1], arr[j]
			}
		}
	}
}
 
func main() {
	arr := []int{3, 2, 5, 4, 1}
 
	fmt.Println("Before bubbleSort array: ", arr)
 
	bubbleSort(arr)
	fmt.Println("After bubbleSort array: ", arr)
}
 

참고