алгоритм сортировки нужен
От: Аноним  
Дата: 20.03.12 15:25
Оценка:
есть вектор точек с координатами ХУ. 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 строго больше.

вопрос — как сие сделать на С++???
понятно — что списки на каждый срез можно сделать. отдельно
все что больше Хо отсортировать в убывание, потом остаток в возрастание.
потом склеить...

но чтото больно страшно выглядит подходец.
а учитывая, что вероятно потом товарищи захотят поменять "оценочную функцию"
генерирующую такие выводы — то... хочется чегото удобоваримого и удобного
для дальнейшего улучшения...

есть идеи? может я чтото упускаю из виду?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.