Skip to content

C++:SelectionSort

선택 정렬 C++ 샘플 예제.

#include <iostream>
#include <vector>
#include <algorithm>
#include <cstdlib>

using namespace std;

typename vector<int>::iterator
findMin(typename vector<int>::iterator & begin, typename vector<int>::iterator & end)
{
    if (begin == end) {
        return begin;
    }

    vector<int>::iterator result = begin;
    for (vector<int>::iterator itr = begin + 1; itr != end; ++itr) {
        if (*itr < *result) {
            result = itr;
        }
    }

    return result;
}

int main(int argc, char ** argv)
{
    vector<int> list;

    if (argc >= 2) {
        for (int index = 1; index < argc; ++index) {
            list.push_back(atoi(argv[index]));
        }
    } else {
        cout << "[ERROR] Empty number.\n";
        return 1;
    }

    vector<int>::iterator end = list.end();

    cout << "List: ";
    for (vector<int>::iterator itr = list.begin(); itr != end; ++itr) {
        cout << *itr << ' ';
    }
    cout << endl;

    int minimum = 0;

    for (vector<int>::iterator itr = list.begin(); itr != end; ++itr) {
        cout << "Cursor: " << *itr;
        vector<int>::iterator pivot = findMin(itr, end);
        cout << ", Pivot: " << *pivot << endl;
        std::swap(*itr, *pivot);
    }

    cout << "Sort: ";
    for (vector<int>::iterator itr = list.begin(); itr != end; ++itr) {
        cout << *itr << ' ';
    }
    cout << endl;

    return 0;
}

See also