[c++] 선택정렬

선택정렬은 정렬되지 않은 리스트에서 최소값을 찾아 해당 위치로 이동시키는 과정을 반복하여 정렬을 완성하는 알고리즘이다.

알고리즘 설명

  1. 리스트에서 최소값을 찾는다.
  2. 최소값과 리스트의 맨 앞의 요소를 교환한다.
  3. 다음 요소부터 위의 과정을 반복한다.

예시 코드

#include <iostream>
using namespace std;

void selectionSort(int arr[], int n) {
    for (int i = 0; i < n - 1; i++) {
        int minIndex = i;
        for (int j = i + 1; j < n; j++) {
            if (arr[j] < arr[minIndex]) {
                minIndex = j;
            }
        }
        // swap arr[i] and arr[minIndex]
        int temp = arr[i];
        arr[i] = arr[minIndex];
        arr[minIndex] = temp;
    }
}

int main() {
    int arr[] = {64, 25, 12, 22, 11};
    int n = sizeof(arr) / sizeof(arr[0]);
    selectionSort(arr, n);
    cout << "Sorted array: ";
    for (int i = 0; i < n; i++) {
        cout << arr[i] << " ";
    }
    return 0;
}

시간 복잡도

이 알고리즘의 시간 복잡도는 O(n^2)이다.

참고 자료