반응형
🔎 C언어 선택 정렬(Selection Sort) 쉽게 배우기 – 정렬 알고리즘 기초
지난 글에서는 버블 정렬(Bubble Sort)을 배웠습니다.
이번에는 또 다른 기초 정렬 알고리즘인 선택 정렬(Selection Sort)을 C언어로 구현해봅니다.
✅ 1. 선택 정렬이란?
선택 정렬은 가장 작은 값을 찾아 맨 앞으로 보내는 방식의 정렬입니다.
버블 정렬처럼 계속 교환하지 않고, 한 번의 탐색에서 최소값을 선택해 위치를 교환합니다.
✅ 2. 선택 정렬 알고리즘 동작 원리
- 배열에서 최소값을 찾는다.
- 해당 값을 현재 위치와 교환한다.
- 이 과정을 배열 끝까지 반복한다.
✅ 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. 연습 문제
- 배열 {64, 25, 12, 22, 11}을 선택 정렬로 정렬해보세요.
- 내림차순 선택 정렬을 구현해보세요.
- 사용자로부터 입력받은 10개의 수를 선택 정렬로 오름차순 정렬하는 프로그램을 작성해보세요.
📌 내부 링크 시리즈
C언어 기초 학습 시리즈:
📌 다음 강의 예고
다음 글에서는 삽입 정렬(Insertion Sort)을 배웁니다.
버블/선택 정렬과 달리, 이미 정렬된 부분에 값을 “삽입”하는 방식입니다.
👉 다음 글: C언어 삽입 정렬(Insertion Sort)
이 글이 유익하셨다면 댓글과 공감 부탁드립니다!
더 많은 학습 글은 👉 Coding Life 100 Hacks 에서 확인하세요 😊
반응형
'c언어 입문' 카테고리의 다른 글
C언어 버블 정렬(Bubble Sort) 쉽게 배우기 – 정렬 알고리즘 기초 (0) | 2025.09.05 |
---|---|
[C언어 기초] 함수(function) 쉽게 배우기 – 코드 재사용의 시작 (3) | 2025.08.11 |
[C언어 기초] 배열(array) 쉽게 배우기 – 여러 개의 데이터를 한번에 다루기 (1) | 2025.08.08 |
[C언어 기초] 반복문(for, while) 쉽게 배우기 – 구구단 만들기 실습 (3) | 2025.08.05 |
[C언어 기초] 조건문(if, else) 쉽게 배우기 – 점수 판별 프로그램 만들기 (0) | 2025.08.02 |
댓글