Вот тут выкладываю, логику моего алгоритма.

Код AS3:
// меняем значения вершин
var swapSy0Sy1:Boolean=false;
var swapSy0Sy2:Boolean=false;
var swapSy1Sy2:Boolean=false;
if (sy0 > sy1) {
swapSy0Sy1=true;
}else {
//Нечего не меняем.
}
if(swapSy0Sy1){
if (sy0 > sy2) {
swapSy0Sy2=true;
} else {
//Выдаем значения.
sy0(= sy1)
sy1(= sy0)
sx0(= sx1)
sx1(= sx0)
u0(=u1)
u1(=u0)
v0(=v1)
v1(=v0)
}
}
if(swapSy0Sy2){
if (sy1 > sy2) {
swapSy1Sy2=true;
} else {
//Выдаем значения.
sy0(=sy2)
sy2(=sy0)
sx0(=sx2)
sx2(=sx0)
u0(=u2)
u2(=u0)
v0(=v2)
v2(=v0)
}
}
if(swapSy1Sy2){
//Выдаем значения.
sy1(=sy2)
sy2(=sy1)
sx1(=sx2)
sx2(=sx1)
u1(=u2)
u2(=u1)
v1(=v2)
v2(=v1)
}
Если, что-то неверно в логике пишите.
P/S Конечно, тут кое что нужно дописать, но алгоритм рассчитан, сортировать не сортируя, человек должен скомпилить логику и выдать нагора результат, при условии что нужна скорость. Компьютер может делать умножения, но зачем это делать, если нужен только результат...