Ich versuche, ein C++ - Programm zu schreiben, das ein Benutzereingabearray mit dem Merge-Algorithmus sortiert.Merge Sort-Algorithmus in C++
Hier ist die Split-Funktion:
void split(int numbers[], int size) {
if (size == 1)
return;
int mid = size/2;
int firstPartSize = mid;
int secondPartSize = size - mid;
int *firstArray;
firstArray = new int[firstPartSize];
int *secondArray;
secondArray = new int[secondPartSize];
for (int i = 0; i < size; i++) {
if (i < mid)
firstArray[i] = numbers[i];
else
secondArray[i - mid] = numbers[i];
}
split(firstArray, firstPartSize);
split(secondArray, secondPartSize);
merge(numbers, firstArray, firstPartSize, secondArray, secondPartSize);
}
Hier ist die Vereinigungsfunktion:
void merge(int outputArray[], int firstArray[], int n1, int secondArray[], int n2) {
int k = 0;
int i = 0;
int j = 0;
while (i < n1 && j < n2) {
if (firstArray[i] < secondArray[j])
outputArray[k++] = firstArray[i++];
else
outputArray[k++] = secondArray[j++];
}
while (i < n1)
outputArray[k++] = firstArray[i++];
while (j < n2)
outputArray[k++] = secondArray[j++];
for (int c = 0; c < n1+n2; c++)
{
cout << outputArray[c] << " ";
}
}
Wenn ich versuche, ein Array einfügen, hier ist was ich
Enter the size of the array you want to sort:
3
Enter the elements of the array:
4
7
1
1 7 1 4 7 Press any key to continue
bekommen Was bin ich hier fehlt?
Willkommen bei Stack-Überlauf! Es klingt, als müssten Sie lernen, wie Sie einen Debugger verwenden, um durch Ihren Code zu gehen. Mit einem guten Debugger können Sie Ihr Programm Zeile für Zeile ausführen und sehen, wo es von dem, was Sie erwarten, abweicht. Dies ist ein essentielles Werkzeug, wenn Sie programmieren wollen. Weiterführende Literatur: [Wie kleine Programme zu debuggen] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/). –
Das richtige Werkzeug, um solche Probleme zu lösen, ist Ihr Debugger. Sie sollten Schritt für Schritt durch Ihren Code * gehen, bevor Sie auf Stack Overflow nachfragen. Für weitere Hilfe lesen Sie bitte [Wie kleine Programme zu debuggen (von Eric Lippert)] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/). Zumindest sollten Sie Ihre Frage bearbeiten, um ein [minimales, vollständiges und verifizierbares] (http://stackoverflow.com/help/mcve) Beispiel einzufügen, das Ihr Problem zusammen mit den Beobachtungen, die Sie in der Debugger. –
[sizeof] (http://en.cppreference.com/w/cpp/language/sizeof) tut nicht, was Sie denken, dass es tut. –