用Java写一个静态方法:
public static void sortByFour (int[] arr)
它接收一个充满非负数(零或正数)的数组作为参数,并按以下方式对数组进行排序:
在数组的开头,所有能被四整除的数字都会出现。
在它们之后,将出现数组中除以 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++;
}
}
如何修复或重写我的代码以使其正常运行?