Не сортировка
Сортировка. Только на множестве используется отношение порядка, отличное от принятого для действительных чисел.
#include <vector>
#include <algorithm>
#include <iterator>
#include <iostream>
template <typename T> int sgn(const T val) {
return (T(0) < val) - (val < T(0));
}
int main() {
std::vector<double> v = {0, 2, -1, -100, -3, 4, 1, -90};
std::cout << "Original: ";
std::copy(v.begin(), v.end(), std::ostream_iterator<double>(std::cout, " "));
std::cout << std::endl;
std::stable_sort(v.begin(), v.end(),
[](const double &a, const double &b) -> bool {
const int sa = sgn(a);
const int sb = sgn(b);
return sa < sb;
});
std::cout << "Sorted: ";
std::copy(v.begin(), v.end(), std::ostream_iterator<double>(std::cout, " "));
std::cout << std::endl;
return 0;
}
Original: 0 2 -1 -100 -3 4 1 -90
Sorted: -1 -100 -3 -90 0 2 4 1