我正在尝试创建一个合并排序方法,但它总是给出错误的排序。我在哪里有改变,使它真正排序的数组?代码的哪一部分必须有所不同?谢谢您抽时间见我。
public static void mergeSort(int[] array, int left, int lHigh, int right, int rHigh) {
int elements = (rHigh - lHigh +1) ;
int[] temp = new int[elements];
int num = left;
while ((left <= lHigh) && (right <= rHigh)){
if (a[left] <= array[right]) {
temp[num] = array[left];
left++;
}
else {
temp[num] = array[right];
right++;
}
num++;
}
while (left <= right){
temp[num] = array[left]; // I'm getting an exception here, and is it because of the num???
left += 1;
num += 1;
}
while (right <= rHigh) {
temp[num] = array[right];
right += 1;
num += 1;
}
for (int i=0; i < elements; i++){
array[rHigh] = temp[rHigh];
rHigh -= 1;
}
编辑:现在mergeSort并不是真的对数字进行排序,谁能告诉我它具体在哪里?尤其是当我打印“测试合并排序”部分时。
https://stackoverflow.com/questions/1735863
复制相似问题