Bubble Sort(거품 정렬)

2021. 8. 5. 00:38카테고리 없음

n-1번의 round

각 round마다 2개 값씩 비교


코드

 


구현 방법

 

Round 1

초기상태: 정렬을 하고자 하는 list

1. 0번째와 1번째를 비교 -> 교환(8>5)

2. 1번째와 2번째를 비교 -> 교환(8>6)

3. 2번째와 3번째를 비교 -> 교환(8>2)

 

Round 2

4. 0번째와 1번째를 비교 -> 교환하지 않는다(5<6)

5. 1번째와 2번째를 비교 -> 교환(6>2)

6. 2번째와 3번째를 비교 -> 교환하지 않는다(6<8)

 

Round 3

7. 0번째와 1번째를 비교 -> 교환(5>2)

8. 1번째와 2번째를 비교 -> 교환하지 않는다(5<6)

9. 2번째와 3번째를 비교 -> 교환하지 않는다(6<8)


시간 복잡도

 

교환: (n-1)+(n-2)+(n-3)+...+2+1 = n*(n-1)/2

비교: (n-1)+(n-2)+(n-3)+...+2+1 = n*(n-1)/2

T(n) = O(n^2)


특징

장점

  • 구현이 매우 간단하다.

 

단점

 

  • 순서에 맞지 않은 요소를 인접한 요소와 교환한다.
  • 하나의 요소가 가장 왼쪽에서 가장 오른쪽으로 이동하기 위해서는 배열에서 모든 다른 요소들과 교환되어야 한다.
  • 특히 특정 요소가 최종 정렬 위치에 이미 있는 경우라도 교환되는 일이 일어난다.
  • 일반적으로 자료의 교환 작업(SWAP)이 자료의 이동 작업(MOVE)보다 더 복잡하기 때문에 버블 정렬은 단순성에도 불구하고 거의 쓰이지 않는다.


출처

https://gmlwjd9405.github.io/2018/05/06/algorithm-bubble-sort.html

https://bowbowbow.tistory.com/10

https://www.youtube.com/watch?v=Du-EHAUE0kM&list=PLsMufJgu5932XYejsOwcUDJ2F75f56nrl&index=16