Возможный алгоритм.
Этап 1.
Строим выпуклую оболочку. Использованные точки отбрасываем. По оставшимся опять строим выпуклую оболочку... В итоге получаем несколько вложенных непересекающихся оболочек и, возможно, 1-2 точки внутри самой внутренней из них.
Этап 2.
Соединяем каждую из оболочек с ближайшей внешней. Для чего ищем две пары соседних вершин, по одной на каждой из оболочек, таких, чтобы образованный ими четырёхугольник не пересекался ни с одной из этих оболочек, и соответственно заменяем образуемые этими парами рёбра на рёбра, являющиеся другой парой сторон четырёхугольника. Если на первом этапе остались 1-2 внутренние точки, то просто присоединяем их к внутренней оболочке так, чтобы не получить самопересечения.
В итоге получаем несамопересекающийся многоугольник. Обходим его в любом направлении от любой из вершин - полученный список и есть требуемый ответ.