Java で静的メソッドを作成します。
public static void sortByFour (int[] arr)
これは、負でない数値 (ゼロまたは正) でいっぱいの配列をパラメーターとして受け取り、次の方法で配列を並べ替えます。
配列の先頭には、4 で割り切れるすべての数値が表示されます。
それらの後に、4 で割り、余りが 1 である配列内のすべての数値が表示されます。
それらの後に、配列内の 4 で割り、余りが 2 であるすべての数値が表示されます。
配列の最後には、すべての残りの数 (4 で割って 3 余りの数) が表示されます。
(各グループの数字の順番は関係ありません。)
この方法は、可能な限り効率的でなければなりません。
以下は私が書いたものですが、残念ながらうまくいきません... :(
public static void swap( int[] arr, int left, int right )
{
int temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
}
public static void sortByFour( int[] arr )
{
int left = 0;
int right = ( arr.length - 1 );
int mid = ( arr.length / 2 );
while ( left < right )
{
if ( ( arr[left] % 4 ) > ( arr[right] % 4 ) )
{
swap( arr, left, right );
right--;
}
if ( ( arr[left] % 4 ) == ( arr[right] % 4 ) )
left++;
else
left++;
}
}
コードがうまく機能するようにコードを修正または書き直すにはどうすればよいですか?