Selection Sort in C++
最良/平均/最悪時間計算量 すべてがO(N^2). 最も素朴な実装と言える.
code:c++
#include <iostream>
#include <vector>
void print_int_vec(const std::vector<int> &a)
{
for (auto elem : a)
{
std::cout << elem << " ";
}
std::cout << std::endl;
}
size_t find_min_value_index(const std::vector<int> &a, size_t start_idx)
{
size_t min_value_idx = start_idx;
for (size_t i = start_idx; i < a.size(); i++)
{
min_value_idx = ai < amin_value_idx ? i : min_value_idx;
}
return min_value_idx;
}
void swap(std::vector<int> &a, size_t i, size_t j)
{
int tmp = ai;
ai = aj;
aj = tmp;
}
void selection_sort(std::vector<int> &a)
{
size_t vec_length = a.size();
for (size_t i = 0; i < vec_length - 1; i++)
{
size_t min_value_idx = find_min_value_index(a, i);
swap(a, i, min_value_idx);
}
}
int main(void)
{
int N;
std::cin >> N;
std::vector<int> A(N);
for (size_t i = 0; i < N; i++)
{
std::cin >> Ai;
}
selection_sort(A);
print_int_vec(a);
return 0;
}