我一直在試圖實現我的「自己的」MergeSort,它似乎適用於較小的值,但我試圖在一個1-100,000的數組隨機順序,並獲得一些奇怪的數字混合在當我打印出來。我已經跟蹤了10次,沒有運氣。MergeSort wonkiness
public static void mergeSort(int[] array){
if(array.length > 1){
int midPoint = array.length/2;
int[] leftArray = new int[midPoint];
int[] rightArray = new int[array.length - midPoint];
System.arraycopy(array, 0, leftArray, 0, midPoint);
System.arraycopy(array, midPoint, rightArray, 0, array.length - midPoint);
mergeSort(leftArray);
mergeSort(rightArray);
merge(leftArray, rightArray, array);
}
}
public static void merge(int[] left, int[] right, int[] bigArray){
int counterLeft = 0, counterRight = 0, counterNewArray = 0;
while(counterLeft < left.length && counterRight < right.length){
if(left[counterLeft] < right[counterRight]){
bigArray[counterNewArray] = left[counterLeft];
counterLeft++;
counterNewArray++;
}else{
bigArray[counterNewArray] = right[counterRight];
counterRight++;
counterNewArray++;
}
}
while(counterLeft < left.length){
bigArray[counterNewArray] = left[counterLeft];
counterLeft++;
}
while(counterRight < right.length){
bigArray[counterNewArray] = right[counterRight];
counterRight++;
}
if(bigArray.length < 500){
System.out.println("Merged array:");
for(int i = 0; i < bigArray.length; i++){
System.out.println(bigArray[i]);
}
}
}
」一些奇怪的數字混在「....你能舉個例子嗎?編譯器中的int類型有多大?有時候溢出可以和你玩...... – Floris
@弗洛里斯:這是Java。 Ints的大小是32位。 – cHao