есть вектор точек с координатами ХУ. std::vector<Points>, где
Points структура, хранящая Х/У.
на плоскости они разбросаны, к примеру, вот так:
1 2 3
6 5 4
8 7 9
10 12 11
номерами — я просто как бы ссылки дал на все объекты Points.
как видим они даже могут изначально быть неупорядоченными.
задача строго упорядочить по таким одновременным условиям:
задается некий Хо, относительно которого надо получить сортировку
по Иксам по убыванию(равенству) влево от Хо и тут же по возрастанию
вправо от Хо. И все это на фоне убывания У в одном варианте прохода
алгоритма, и по возрастанию — в другом.
т.о. для первого варианта сортировки
(где Хо пусть равен координате х для точек 2-5-7-12 исходной
последовательности) получим:
2 1 3 ||
5 4 6 ||
8 7 9 ||
11 10 12 \/ У убывает
во втором (У возрастает):
11 10 12
8 7 9
5 4 6
2 1 3
и как можете заметить внутри каждого среза с одним Уi
относительно Хо, на примере первого среза из
первого варианта:
<---
2 1
--->
3
сперва две точки по убыванию икса, относительно Хо,
потом третья — идущая по возрастанию...
точка 1 принадлежит Хо, точка 3 строго больше.
вопрос — как сие сделать на С++???
понятно — что списки на каждый срез можно сделать. отдельно
все что больше Хо отсортировать в убывание, потом остаток в возрастание.
потом склеить...
но чтото больно страшно выглядит подходец.
а учитывая, что вероятно потом товарищи захотят поменять "оценочную функцию"
генерирующую такие выводы — то... хочется чегото удобоваримого и удобного
для дальнейшего улучшения...
есть идеи? может я чтото упускаю из виду?