最初、最後、および中間要素の中央値を使用してクイックソートのピボットを見つける次のコードを見つけました。
int middle = ( low + high ) / 2;
if( a[ middle ].compareTo( a[ low ] ) < 0 )
swapReferences( a, low, middle );
if( a[ high ].compareTo( a[ low ] ) < 0 )
swapReferences( a, low, high );
if( a[ high ].compareTo( a[ middle ] ) < 0 )
swapReferences( a, middle, high );
// Place pivot at position high - 1
swapReferences( a, middle, high - 1 );
Comparable pivot = a[ high - 1 ];
中央値を見つけた後に知りたいのですが、スワップが高ではなく高-1 で行われるのはなぜですか?