、次の3つのステップの並び順:クイックソートは分割統治戦略に基づいて、他のソートアルゴリズムであり、基本的な考え方は、サブアレイ[R P]のために入力されます。
プライベート 静的 ボイド、qソート(INT P、INT R&LT) { IF(P < R&LT) { int型 Q = パーティション(P、R&LT) 、qソート(P、Q -1); // 左半分をソート のqsort(Q + 1 、R&LT); // 右半分のセグメントの順序 } }
プライベート 静的 int型のパーティション(int型 P、INT R&LT) { int型 Iは= P; INT J = 1 + R&LT。 、 匹敵X = A [P]; // <左側の領域にX交換素子 // 意志>要素x右側領域に切り替え ながら(trueに) { 一方([++ I] .compareTo(X)<0 && I < R&LT); 一方、([ - J] .compareTo(X)> 0 ); IF(I> = J)BREAK ; MyMath.swap(A、I、J); } A [P]は = [J]を。 [J]= X。 リターンJ。 }
ここで無限ループがある理由を説明するには?あなたは[P]を選択した場合は、ベンチマークが分割されると、[p]は次のとおりです。[P rは]最小の要素が無限ループに分類されないのはなぜ?