일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 개발자
- HTTP
- JQuery
- 하루코딩
- 자바
- jsp
- SQLP
- SQLD
- java
- 정렬알고리즘
- 서버
- javascript
- 그리디알고리즘
- codingtest
- 탐욕알고리즘
- 알고리즘
- 네트워크
- 파이썬
- 알고리즘코딩테스트
- API
- HTTP상태
- ChatGPT
- Python
- SQL
- 챗지피티
- 코딩테스트
- 백준
- 프로그래머스
- 개발
- Spring
- Today
- Total
개발자's Life
[알고리즘] 로직이 단순한 버블정렬의 개념 본문
버블 , 선택, 삽입, 퀵, 병합, 기수 정렬
버블정렬
인접 요소끼리 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 하는 정렬을 버블정렬이라고 한다.
'코딩테스트 > Study' 카테고리의 다른 글
[알고리즘] 삽입정렬의 개념 및 예시 정리 (0) | 2023.08.01 |
---|---|
[알고리즘] 중요하지 않은 듯 중요한 선택정렬 (0) | 2023.07.30 |
[알고리즘] 스택과 큐에 대한 개념정리 (0) | 2023.07.27 |
[알고리즘] 구간 합 - 배열 (0) | 2023.07.27 |
[Study] 자료구조 배열과 리스트, 핵심이론!! (0) | 2023.07.25 |