Hallo,
ich programmiere eine Zeit schon an einem Programm, welches Bubble- und Mergesort vergleicht. Dazu erzeuge ich mehrere Arrays, die mit Zufallszahlen befüllt werden, und anschließend einmal mit Bubble und dann mit Merge sortiert werden. Darum herum wird die Zeit gemessen und am Ende ausgegeben, wie lange welches Sortierverfahren benötigt hat, bzw in welchen Verhältnis der Programmaufwand besteht.
Nun ist es so, dass ich immer eine Fehlermeldung erhalte:
„C Run-Time Check Failure #2 - Stack around the variable ‚f‘ was corrupted.“
Das ist mein letztes, zu sortierende Array für den Mergesort.
Wenn ich dieses auf 1000 Felder verkleinere, wie in dem Teil davor, bekomme ich die gleiche Fehlermeldung, allerdings für das Array ‚d‘, also das Merge-Array von der Sortierung mit 1000 Feldern.
Also muss ich in einer Mergefunktion einen stackoverflow haben, nicht wahr? Ich finde aber meinen Fehler nicht. Um Hilfe wäre ich sehr dankbar!
mit Gruße,
Streuselchen
Der Code (das Hauptprogramm „main“ ist ganz unten)
#include "stdafx.h"
#include
#include
#include
#include
#include
void dreieckstausch(int \*x, int \*y)
{
int help;
help = \*x;
\*x = \*y;
\*y = help;
}
void bubble(int a[],int n)
{
int i,j;
for (i=0; ia[j+1]) dreieckstausch(&a[j],&a[j+1]);
}
}
}
void merge(int a[], int low, int high, int mitte) //Zusammenfügen mit Hilfsarray c
{
int i,j,k, b[5000];
i=0;
j=low;
//erste Hälfte des Arrays a ins Hilfsarray b
while (j
_[MOD: code-tags in pre-tags umgewandelt]_