개발자's Life

[알고리즘] 로직이 단순한 버블정렬의 개념 본문

코딩테스트/Study

[알고리즘] 로직이 단순한 버블정렬의 개념

Rowen Jobs 2023. 7. 29. 17:57
728x90
반응형

버블 , 선택, 삽입, 퀵, 병합, 기수 정렬

 

버블정렬

인접 요소끼리 swap 연산을 수행하며 정렬

정렬 알고리즘보다 속도가 느리면 로직이 단순한 정렬 알고리즘 이다.

 

오름차순으로 정렬시

인접요소인 0 인덱스와 1 인덱스를 비교로 시작한다. 

오름차순 시 비교하여 왼쪽값이 더 높을 경우 자리를 swap 하고 

왼쪽값이 낮을 경우는 그대로 유지를 하고 다음 인덱스 비교로 넘어간다.

(0 - 1 비교, 1 - 2 비교, 2 - 3 비교 ....)

53 23 4 24 5 12

53 - 23 비교하면 왼쪽값:53 이 더 커서 swap

                                     ▽

23 53 4 24 5 12

53 - 4 비교하면 왼쪽값:53 이 더 커서 swap

                                    

23 4 53 24 5 12

53 - 24 비교하면 왼쪽값:53 이 더 커서 swap

                                    

23 4 24 53 5 12

53 - 4 비교하면 왼쪽값:53 이 더 커서 swap

                                    

23 4 24 5 53 12

53 -12 비교하면 왼쪽값:53 이 더 커서 swap

                                    

23 4 24 5 12 53

최종 오른쪽 고정 값은 53이 고정이 되고 남은 인덱스들 비교하며 정렬이 진행된다.

 

인덱스 5를 제외하고 인덱스 0 ~ 4를 순차적으로 비교를 한다

23 4 24 5 12 53

                                    ▽

4 23 24 5 12 53

                                    

4 23 24 5 12 53

                                    

4 23 5 24 12 53

                                    

4 23 5 12 24 53

 

이런식으로 남은 인덱스들을 순차적으로 비교하고 최댓값을 오른쪽으로 차곡차곡 쌓아 나간다. 

4 5 12 23 24 53

마지막으로 오름차순 정렬된 결과 값은 위와 같고 

 

다시 장단점을 설명 드리자면 

로직이 단순하고 구현이 쉬운 장점이 있지만 

계속 반복작업이 이루어져 시간 소요가 길다는 단점이 있다. 

 

위와 같이 인접요소끼리 비교하며 swap 하는 정렬을 버블정렬이라고 한다. 

 

 

728x90
Comments