直接看代码
#include <iostream>
#include <algorithm>
#include <array>
template<typename T, typename Arg>
void Swap(T& T_Container, Arg param1, Arg param2)
{
typename T::value_type Tmp{T_Container[param1]};
T_Container[param1] = T_Container[param2];
T_Container[param2] = Tmp;
}
template<typename T>
void SelectSort(T& T_Container)
{
for (auto i(0); i < static_cast<decltype(i)>(T_Container.size()); ++i)
{
auto tmp_idx(i);
for (auto j(i + 1); j < static_cast<decltype(i)>(T_Container.size()); ++j)
{
if (T_Container[tmp_idx] > T_Container[j])
{
tmp_idx = j;
}
}
if (tmp_idx != i)
{
Swap(T_Container, tmp_idx, i);
}
}
}
template<typename T>
void Display(T& T_Container)
{
std::cout << "排序前: ";
std::for_each(T_Container.begin(), T_Container.end(), [](auto i)
{
std::cout << i << " ";
});
std::cout << std::endl;
SelectSort(T_Container);
std::cout << "排序后: ";
std::for_each(T_Container.begin(), T_Container.end(), [](auto i)
{
std::cout << i << " ";
});
std::cout << std::endl;
}
int main(void)
{
std::array<int, 4> arr{4, 3, 2, 9};
Display(arr);
return 0;
}
这是代码链接
https://godbolt.org/z/5oGcGKd1z
欢迎指正!!!!=。=