본문 바로가기
c언어 입문

C언어 선택 정렬(Selection Sort) 쉽게 배우기 – 정렬 알고리즘 기초

by 두뇌향상중 2025. 9. 10.
반응형

🔎 C언어 선택 정렬(Selection Sort) 쉽게 배우기 – 정렬 알고리즘 기초

지난 글에서는 버블 정렬(Bubble Sort)을 배웠습니다.
이번에는 또 다른 기초 정렬 알고리즘인 선택 정렬(Selection Sort)을 C언어로 구현해봅니다.


✅ 1. 선택 정렬이란?

선택 정렬은 가장 작은 값을 찾아 맨 앞으로 보내는 방식의 정렬입니다.
버블 정렬처럼 계속 교환하지 않고, 한 번의 탐색에서 최소값을 선택해 위치를 교환합니다.


✅ 2. 선택 정렬 알고리즘 동작 원리

  1. 배열에서 최소값을 찾는다.
  2. 해당 값을 현재 위치와 교환한다.
  3. 이 과정을 배열 끝까지 반복한다.

✅ 3. C언어 코드 예제

#include <stdio.h>

int main() {
    int arr[5] = {5, 3, 4, 1, 2};
    int n = 5;

    for (int i = 0; i < n - 1; i++) {
        int min_idx = i;
        for (int j = i + 1; j < n; j++) {
            if (arr[j] < arr[min_idx]) {
                min_idx = j;
            }
        }
        // swap
        int temp = arr[i];
        arr[i] = arr[min_idx];
        arr[min_idx] = temp;
    }

    printf("정렬 결과: ");
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    return 0;
}

실행 결과:
정렬 결과: 1 2 3 4 5


💡 4. 버블 정렬과의 차이점

  • 버블 정렬: 인접한 값을 계속 교환 → 교환 횟수 많음
  • 선택 정렬: 최소값만 찾아서 교환 → 교환 횟수 적음
  • 둘 다 시간 복잡도는 O(n²) → 큰 데이터에서는 비효율적

❗ 5. 자주 하는 실수

  • 최소값 인덱스를 잘못 저장해서 정렬 오류 발생
  • 스왑(swap) 코드 누락

📝 6. 연습 문제

  1. 배열 {64, 25, 12, 22, 11}을 선택 정렬로 정렬해보세요.
  2. 내림차순 선택 정렬을 구현해보세요.
  3. 사용자로부터 입력받은 10개의 수를 선택 정렬로 오름차순 정렬하는 프로그램을 작성해보세요.

📌 내부 링크 시리즈

C언어 기초 학습 시리즈:


📌 다음 강의 예고

다음 글에서는 삽입 정렬(Insertion Sort)을 배웁니다.
버블/선택 정렬과 달리, 이미 정렬된 부분에 값을 “삽입”하는 방식입니다.

👉 다음 글: C언어 삽입 정렬(Insertion Sort)


이 글이 유익하셨다면 댓글과 공감 부탁드립니다!
더 많은 학습 글은 👉 Coding Life 100 Hacks 에서 확인하세요 😊

반응형

댓글