赤いものとすべての青いものとの間の距離を計算し、これらを長さでソートするよりも良い解決策があるとは思えません。
並べ替えに関しては、通常、QuickSort のパフォーマンスに勝るものはありません (最適化されたもので、サイズが 7 項目を下回ると再帰を遮断し、InsertionSort、おそらく ShellSort などに切り替えます)。
したがって、この計算を 50 回行う必要があるため、問題は 2 つのポリゴン間の距離をすばやく計算する方法だと思います。
次のアプローチは 3D でも機能しますが、おそらく最速の方法ではありません。
2D 空間での最小ポリゴン距離
問題は、正確性をスピードと引き換えにする意思があるかどうかです。たとえば、すべてのポリゴンをバウンディング ボックスにパックできます。ボックスの側面は座標系の軸に平行です。3D ゲームでは、このアプローチが頻繁に使用されます。したがって、仮想バウンディング ボックスを構築するには、すべての座標 (x、y、z) の最大値と最小値を見つける必要があります。これらのバウンディング ボックスの距離を計算するのは、非常に簡単な作業です。
座標系の軸に平行ではない、より高度な境界ボックスの画像の例を次に示します。
有向バウンディング ボックス - OBB
ただし、これにより、距離の計算が簡単ではなくなります。距離を知る必要がないため、衝突検出に使用されます。1 つのバウンディング ボックスの 1 つのエッジが別のバウンディング ボックス内にあるかどうかだけを知る必要があります。
次の図は、軸が整列したバウンディング ボックスを示しています。
軸が整列したバウンディング ボックス - AABB
OOB はより正確で、AABB はより高速です。この記事を読みたいと思うかもしれません:
高度な衝突検出技術
これは常に、精度と速度を犠牲にすることをいとわないことを前提としています。速度よりも精度が重要な場合は、より高度な技術が必要になる場合があります。