【发布时间】:2012-05-26 15:56:43
【问题描述】:
对于家庭作业,我需要编写可以对数组进行排序的方法,排序方法应该尽可能高效。
- 数组的开头将出现所有除以 4 的数字,没有余数。
- 后面是所有除以 4 余数为 1 的数字
- 后面是除以 4 余数为 2 的所有数字
- 所有其他数字(除以四除以其余三的数字)位于数组的末尾。
我试过这组 4 个指针:
2个指针起初0和1的余数
数组最后的 2 个指针,用于 2 和 3 的余数
这是我目前能找到的(当然有问题),感谢您的帮助!
public static void sortByFour (int[] arr)
{
int temp;
int noRemainderIndex = 0;
int remainder1Index = 1;
int remainder2Index = arr.length - 2;
int remainder3Index = arr.length - 1;
for (int i = 0; i < arr.length; i++)
{
if (arr[i] % 4 == 0)
{
temp = arr[noRemainderIndex];
arr[noRemainderIndex] = arr[i];
arr[i] = temp;
noRemainderIndex++;
remainder1Index++;
}
else if (arr[i] % 4 == 1)
{
temp = arr[remainder1Index];
arr[remainder1Index] = arr[i];
arr[i] = temp;
remainder1Index++;
}
else if (arr[i] % 4 == 2)
{
temp = arr[remainder2Index];
arr[remainder2Index] = arr[i];
arr[i] = temp;
remainder2Index--;
}
else if (arr[i] % 4 == 3)
{
temp = arr[remainder3Index];
arr[remainder3Index] = temp = arr[i];
arr[i] = temp;
remainder3Index--;
remainder2Index--;
}
}
【问题讨论】:
-
数字之间的顺序除以4的余数相同吗?
-
您可以使用
Array.sort方法吗? -
无需整理
-
不,我需要自己写,这应该是一个节省空间和时间的地方
标签: java arrays performance sorting