Непонятно, почему целевой размер для v2
равен v1.size() - 1
, после сортировки всех элементов v1.size()
должно быть равно 0, а v2.size()
равно размеру v1
перед сортировкой.Проблема с неправильной сортировкой - вы инициализируете ind
и min
в неправильном месте.Он должен быть внутри первого цикла (и учтите, что вам не нужно сохранять значение min
, достаточно индекса):
while (v1.size()) {
size_t ind = 0;
for (size_t i = 1; i < v1.size(); i++)
{
if (v1[i] < v1[ind])
{
ind = i;
}
}
v2.push_back(v1[ind]);
v1.erase(v1.begin() + ind);
}
Но лучше использовать стандартный алгоритм std::min_element()
:
while( not v1.empty() ) {
auto it = std::min_element( v1.begin(), v1.end() );
v2.push_back( *it );
v1.erase( it );
}