정렬 알고리즘 (버블, 선택, 삽입)

2025. 4. 15. 12:47·Computer Science
728x90

정렬이 왜 중요할까?

정렬(Sorting)은 거의 모든 알고르짐 문제에서 기본으로 사용됩니다.

데이터를 정리하면 검색, 탐색, 그룹핑 등이 쉬워집니다.


비교 정렬 알고리즘 (3형제)

버블 정렬 (Bubble Sort)

  • 인접한 요소를 비교해서 더 큰 값을 오른쪽으로 '계속 밀어내는' 방식
    가장 큰 수가 '거품처림' 끝으로 떠오른다.
def bubble_sort(arr):
	n = len(arr)
    for i in range(n):
    	for j in range(n - i - 1):
        	if arr[j] > arr[j + 1]:
            	arr[j], arr[j + 1] = arr[j + 1], arr[j]
    return arr

 

✅ 시간복잡도: O(n²)
✅ 안정 정렬 (같은 값의 순서 유지됨)


선택 정렬 (Selection Sort)

  • 가장 작은 값을 선택해서 맨 앞으로 보내는 방식
    한 바퀴 돌 때 마다 가장 작은 애가 제저리를 찾는다.
def selection_sort(arr):
    n = len(arr)
    for i in range(n):
        min_idx = i
        for j in range(i+1, n):
            if arr[j] < arr[min_idx]:
                min_idx = j
        arr[i], arr[min_idx] = arr[min_idx], arr[i]
    return arr

 

 

✅ 시간복잡도: O(n²)
❌ 안정 정렬 아님


삽입 정렬 (Insertion Sort)

  • 앞부분은 이미 정렬돼 있다고 가정하고, 현재 값을 알맞은 위치에 삽입
    손에 카드를 쥐고 정렬하는 방식과 같아요.
def insertion_sort(arr):
    for i in range(1, len(arr)):
        key = arr[i]
        j = i - 1
        while j >= 0 and arr[j] > key:
            arr[j + 1] = arr[j]
            j -= 1
        arr[j + 1] = key
    return arr

 

 

✅ 평균: O(n²), 최선: O(n)
✅ 안정 정렬


알고리즘 최선 평균 최악 안정 정렬
버블 정렬 O(n) O(n²) O(n²) O
선택 정렬 O(n²) O(n²) O(n²) X
삽입 정렬 O(n) O(n²) O(n²) O
입력 데이터가 이미 정렬된 경우, 삽입 정렬이 가장 유리합니다.

요약 정리

알고리즘 특징 요약
버블 정렬 옆과 비교해 큰 값을 뒤로 밀어냄
선택 정렬 가장 작은 값을 골라 앞으로 보냄
삽입 정렬 현재 값을 앞에서 삽입할 위치를 찾아 끼워 넣

 

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'Computer Science' 카테고리의 다른 글

Heap, Stack, Queue는 언제 쓰는 자료구조일까? for python  (0) 2025.04.16
이진 탐색(Binary Search), 선형 탐색보다 얼마나 빠를까?  (0) 2025.04.15
시간 복잡도와 Big-O  (0) 2025.04.15
람다(lambda) 함수란?  (0) 2025.04.11
클라우드 IaaS, PaaS, SaaS 비교  (0) 2024.03.04
'Computer Science' 카테고리의 다른 글
  • Heap, Stack, Queue는 언제 쓰는 자료구조일까? for python
  • 이진 탐색(Binary Search), 선형 탐색보다 얼마나 빠를까?
  • 시간 복잡도와 Big-O
  • 람다(lambda) 함수란?
Balang
Balang
음악 전공생의 개발일지
  • Balang
    Balang
    Balang
  • 전체
    오늘
    어제
  • 반응형
    • All Post (152) N
      • python (46) N
        • selenium (4)
        • algorithm (10) N
        • Django (6)
        • Pandas | Numpy (22)
      • SQL (9)
      • Data Engineer (31) N
      • Data Scientist (3)
      • Data Analysis (11) N
      • Computer Science (35)
      • Why? (15)
      • 마음가짐 (2)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
Balang
정렬 알고리즘 (버블, 선택, 삽입)
상단으로

티스토리툴바