2016-09-12 4 views
-1

Hallo Ich habe Probleme mit meinem Code. Mein Programm sollte die Werte sortieren, die vom Benutzer mit Merge Sort eingegeben wurden. Hier ist mein Code.Zusammenführen sortieren, um Array von n Werten zu sortieren

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++; 
    } 
} 

Es hat einen Fehler in Zeile 23: mms.sort (Array [i]); was sagt Die Methode sort (int []) im Typ mergeSort ist nicht anwendbar für die Argumente (int).

Vielen Dank im Voraus!

+1

Die Methode wie definiert erwartet ein Array von Ints als Argument. Ihr Anruf übergibt einen einzelnen Int. – paisanco

Antwort

2

Ihre Methode ein Array übergeben Sie einen einzelnen Eingang

for (int i=0; i<array.length; i++){ 
    array[i] = scanner.nextInt(); 
    } 
mergeSort mms = new mergeSort(); 
mms.sort(array); 
1

Diese Methode ein Array erwartet sind vorbei. Sie übergeben einen einzelnen Wert array[i]. Sie müssen es in mms.sort(array) ändern, weil Sie dann das gesamte Array anstelle des Werts an Position [i] in der for-Schleife übergeben.