С <algorithm>
кажется, вы ищете std::nth_element
.Он будет следить за тем, чтобы элементы в желаемой позиции, второй элемент, был правильно размещен, но также следит за тем, чтобы элементы меньше, чем он, в данном случае первый элемент, находились слева от него.Все остальные элементы остаются в неуказанном порядке справа от позиции, которую вы хотели.Программа ниже:
#include <algorithm>
#include <iostream>
#include <iterator>
int main() {
using std::begin;
using std::end;
using std::next;
int array[] = {5, 2, 1, 4, 3};
std::copy(begin(array), end(array), std::ostream_iterator<int>(std::cout, " "));
std::cout << '\n';
std::nth_element(begin(array), next(begin(array)), end(array));
std::copy(begin(array), end(array), std::ostream_iterator<int>(std::cout, " "));
std::cout << '\n';
}
выведет (на моей машине):
5 2 1 4 3
1 2 5 4 3