[c++] 배열과 포인터를 사용한 정렬 알고리즘

배열과 포인터는 C++에서 데이터를 다루는 데 중요한 요소입니다. 여기에는 정렬 알고리즘이나 다양한 자료 구조를 구현할 때 매우 유용합니다. 이 글에서는 C++에서 배열과 포인터를 사용하여 간단한 정렬 알고리즘을 구현하는 방법을 살펴보겠습니다.

배열 사용한 정렬 알고리즘

가장 간단한 정렬 알고리즘 중 하나는 버블 정렬입니다. 이 알고리즘은 배열을 순회하면서 인접한 요소끼리 비교하고 필요에 따라 위치를 바꿔 정렬하는 방식으로 동작합니다. 아래는 버블 정렬 알고리즘이 구현된 C++ 코드입니다.

#include <iostream>

void bubbleSort(int arr[], int n) {
    for (int i = 0; i < n-1; i++) {
        for (int j = 0; j < n-i-1; j++) {
            if (arr[j] > arr[j+1]) {
                std::swap(arr[j], arr[j+1]);
            }
        }
    }
}

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

위 코드에서 bubbleSort 함수는 전달받은 배열을 버블 정렬 알고리즘을 사용하여 정렬합니다. main 함수에서는 정렬된 배열을 출력하는 간단한 예시가 나와 있습니다.

포인터 사용한 정렬 알고리즘

마찬가지로 배열을 사용하는 대신 포인터를 활용하여 정렬 알고리즘을 구현할 수도 있습니다. 아래는 포인터를 사용하여 선택 정렬 알고리즘을 구현한 예시입니다.

#include <iostream>

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;
            }
        }
        std::swap(*(arr+i), *(arr+minIndex));
    }
}

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

이 코드에서 selectionSort 함수는 포인터를 이용하여 배열을 선택 정렬 알고리즘을 사용하여 정렬합니다. main 함수는 정렬된 배열을 출력해 줍니다.

배열과 포인터를 사용한 정렬 알고리즘을 구현하는 것은 알고리즘 이해를 돕고 C++의 기본적인 특성에 대해 더 잘 이해하도록 도와줍니다.

참고 자료