對於作業分配,我需要編寫可對數組進行排序的方法,排序方法應儘可能高效。數組排序有效
- 數組的開頭將顯示除以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之外還有相同的餘數? – nhahtdh
你被允許使用'Array.sort'方法嗎? –
不需要組織它們 –