Java 合并排序以对n个值的数组进行排序
嗨,我的代码有问题。我的程序应该使用合并排序对用户输入的值进行排序。这是我的密码Java 合并排序以对n个值的数组进行排序,java,Java,嗨,我的代码有问题。我的程序应该使用合并排序对用户输入的值进行排序。这是我的密码 public class mergeSort { private int[] inputArray; private int[] tempMergeArray; private int length; public static void main (String args[]) { Scanner scanner = new Scanner(System.in); System.out.pri
public class mergeSort {
private int[] inputArray;
private int[] tempMergeArray;
private int length;
public static void main (String args[])
{
Scanner scanner = new Scanner(System.in);
System.out.println("Enter size of your array");
int n = scanner.nextInt();
int[] array = new int[n];
System.out.println("Enter numbers: ");
for (int i=0; i<array.length; i++){
array[i] = scanner.nextInt();
mergeSort mms = new mergeSort();
mms.sort(array[i]);
for (int j:array){
System.out.println(j);
System.out.print(" ");
}
}
}
public void sort(int array[]){
this.inputArray = array;
this.length = array.length;
this.tempMergeArray = new int [length];
doMergeSort(0, length - 1);
}
private void doMergeSort(int lowerIndex, int higherIndex) {
if (lowerIndex < higherIndex) {
int middle = lowerIndex + (higherIndex - lowerIndex) / 2;
doMergeSort(lowerIndex, middle);
doMergeSort(middle + 1, higherIndex);
mergeParts(lowerIndex, middle, higherIndex);
}
}
private void mergeParts(int lowerIndex, int middle, int higherIndex) {
for (int i = lowerIndex; i <= higherIndex; i++) {
tempMergeArray[i] = inputArray[i];
}
int i = lowerIndex;
int j = middle + 1;
int k = lowerIndex;
while (i <= middle && j <= higherIndex) {
if (tempMergeArray[i] <= tempMergeArray[j]) {
inputArray[k] = tempMergeArray[i];
i++;
} else {
inputArray[k] = tempMergeArray[j];
j++;
}
k++;
}
while (i <= middle) {
inputArray[k] = tempMergeArray[i];
k++;
i++;
}
}
它在第23行有一个错误:mms.sortarray[i];
这表示类型mergeSort中的方法sortint[]不适用于参数int
提前谢谢你 您的方法传递一个数组,而您传递的是单个输入
for (int i=0; i<array.length; i++){
array[i] = scanner.nextInt();
}
mergeSort mms = new mergeSort();
mms.sort(array);
该方法需要一个数组。您正在传入一个单值数组[i]。您需要将其更改为mms.sortarray,因为这样您将传入整个数组,而不是for循环中位置[i]处的值。定义的方法需要一个int数组作为其参数。您的调用传递一个int。