2

配列があり、i 番目と i+1 番目の要素のみを交換できます。最小数の交換操作を使用して、この配列を循環配列にソートするにはどうすればよいですか?

たとえば、私の配列は次のとおりです。

3 5 4 2 1

次に、2番目と3番目を交換します

3 4 5 2 1

そして、4番目と5番目を交換すると、

3 4 5 1 2 

これは、2 つの交換で必要な並べ替えられた円形配列です。

もう一つの例

4 3 5 1 2

ここでは、1st と 2nd を 1 回交換するだけで3 4 5 1 2

これを達成するには、どのアルゴリズムを使用する必要がありますか?

4

1 に答える 1

1

一時変数で for ループを使用してから、すべての配列要素を並べ替えることができますが、 for ループは 2 ずつインクリメントする必要があります。

len=array[(array.length)];
for (i=1 ; i<len - 1 ; i=i+2 ){
    temp=array[i];
    array[i]=array[i+1];
    array[i+1]=temp;    
}
temp=array[0];
array[o]=array[len];
array[len]=temp;

この単純なアルゴリズムは Java で機能し、必要に応じて配列を完全に並べ替えます。

于 2013-11-03T04:04:02.103 に答える