알고리즘 & 코딩 테스트 이론/강의

[🧠 Do it! 알고리즘] 3-1. 버블 정렬 (bubble sort)

가지코딩 2025. 5. 9. 10:39

🧠 목차

  1. 정렬 알고리즘
  2. 버블 정렬
  3. [실전 문제] 수 정렬하기 (백준 2750)

1. 정렬 알고리즘

이번 챕터에서 다룰 정렬 알고리즘의 정의

  • 버블 정렬: 데이터의 인접한 요소끼리 비교하고, swap 연산을 수행하며 정렬하는 방식
  • 선택 정렬: 대상에서 가장 크거나 작은 데이터를 찾아가 선택을 반복하면서 정렬하는 방식
  • 삽입 정렬: 대상을 선택해 정렬된 영역에서 선택 데이터의 적절한 위치를 찾아 삽입하면서 정렬하는 방식
  • 퀵 정렬: pivot 값을 선정해 해당 값을 기준으로 정렬하는 방식
  • 병합 정렬: 이미 정렬된 부분 집합들을 효율적으로 병합해 전체를 정렬하는 방식
  • 기수 정렬: 데이터의 자릿수를 바탕으로 비교해 데이터를 정렬하는 방식
정렬 알고리즘 시간 복잡도 (최선 ~ 최악) 공간 복잡도 안정 정렬 여부 사용 예
버블 정렬 O(n²) O(1) 거의 정렬된 데이터, 교육용
선택 정렬 O(n²) O(1) 메모리 제한 환경, 단순 비교
삽입 정렬 O(n) ~ O(n²) O(1) 작은 데이터 집합, 거의 정렬된 배열
퀵 정렬 O(n log n) ~ O(n²) O(log n) 일반적인 대용량 정렬, 내부 정렬
병합 정렬 O(n log n) O(n) 안정성이 필요한 경우, 외부 정렬
기수 정렬 O(nk) O(n + k) 자릿수가 있는 정수(전화번호, 주민번호 등)

2. 버블 정렬

버블 정렬 (bubble sort)

  • 인접한 데이터의 크기를 비교해 정렬하는 방법
  • 루프를 돌면서 인접한 데이터 간의 swap 연산으로 정렬한다.
  • 간단하게 구현 가능
  • 시간 복잡도 O(n²), 다른 정렬 알고리즘보다 느린편이다.

 

 

버블 정렬 과정

  1. 비교 연산이 필요한 루프 범위를 설정한다.
  2. 인접한 데이터 값을 비교한다.
  3. swap 조건에 부합하면 swap 연산을 수행한다.
  4. 루프 범위가 끝날 때까지 2~3을 반복한다.
  5. 정렬 영역을 설정한다. 다음 루프를 실행할 때는 이 영역을 제외한다.
  6. 비교 대상이 없을 때까지 1~5를 반복한다.

 

문제는 내일 !


3. [실전 문제] 수 정렬하기 (백준 2750)