什么算法将是最优化的?输入是一个 4 的数组,float输出是排序的。
添加:
有一个可以旋转的矩形和一条从其中心出来的直线。确定它穿过哪一侧。有4个临界角(由于周期是2π,而我用的是单位圆,直线到X轴的最大夹角可以是5.9999999 .. pi,但是其中一个临界角大于2π(例如,第三个角度,大约有 1.2 pi,我将矩形旋转 1.5 pi,然后我必须从临界角中减去 2 pi,以便将其与直线进行比较)我想做一个像这样检查
if (lineAngle > angles[3])
std::cout << "RIGHT";
else if (lineAngle > angles[2])
std::cout << "TOP";
else if (lineAngle > angles[1])
std::cout << "LEFT";
else if (lineAngle > angles[0])
std::cout << "DOWN";

这是膝盖上的草图。没有编译。这个想法很清楚,但为了获得更好的效果,它可以在没有函数调用的情况下绘制,尽管我认为优化编译器会自己做所有事情......
基于 log 2 (4!) ~ 4.58 的事实,一般情况下少于 5 次比较是行不通的。