あなたの家庭教師は、単純にセグメントをソートするよりも複雑なLine Segment Intersectionの問題について言及していると思われます。この記事では、二分木を使用して線分を格納し、交点を効率的に検出する Shamos-Hoey アルゴリズムを参照していることに注意してください。
二分木を使用することは、線分の 1 回限りの並べ替えには無意味であるという点で、Michael は正しいです。ただし、交差を検出するコンテキストでは、並べ替えに続いて検索を行うと 2 次のパフォーマンスが得られ、最適なアプローチではないため、ライン検出アルゴリズムでバイナリ ツリーが使用されるのはこのためです。
たとえば、ライン セグメントを x 軸に沿って左から右に並べ替えるとします。単純な検出アルゴリズムは次のようになります。
for (int i=0; i<segs.length - 1; ++i) {
boolean searching = true;
for (int j=i+1; j<segs.length && searching; ++j) {
if (segments overlap on x-axis) {
// Check for intersection.
} else {
// No overlap so terminate inner loop early.
// This is the advantage of having a sorted list.
searching = false;
}
}
}
二重にネストされたループのため、最悪のケースは O(n^2) であり、すべての線分が x 軸上で重なっている場合に発生します。最良のケースは線形であり、x 軸上で重なり合うセグメントがない場合に発生します。
単純なアルゴリズムを実装することから始めてから、B ツリー構造を使用するアルゴリズムを実装することをお勧めします。