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!
Die Methode wie definiert erwartet ein Array von Ints als Argument. Ihr Anruf übergibt einen einzelnen Int. – paisanco