Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 合并排序以对n个值的数组进行排序_Java - Fatal编程技术网

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。