Das ist mir nie passiert und ich habe keine Ahnung, wie ich es beheben kann. Es heißt nur "Unhandled Ausnahme bei 0x003714e9 in Quick.exe: 0xC00000FD: Stapelüberlauf." Dann bricht es ab und es hebt die Klammer hervor und zeigt einen Pfeil daneben, was meiner Meinung nach bedeutet, dass sich der Fehler dort befindet. P.S. Die Halterung ist in fettUnbehandelte Ausnahme bei 0x003714e9 in Quick.exe: 0xC00000FD: Stapelüberlauf
#include<iostream>
using namespace std;
int partition(int data[], int left, int right)
**{**
int pivot = data[left];
while(true)
{
while(data[left] < pivot)
{
left++;
}
while (data[right]>pivot)
{
//find smaller value than pivot from top array
right--;
}
if(left < right)
{
//change pivot place
int temp = data[right];
data[right] = data[left];
data[left] = temp;
}
else
{
return right;
}
}
}
void quickSort (int *data, int left, int right)
{
if(left<right)
{
int cut = partition(data, left, right);
if(cut>1)
{
quickSort(data, left, right);
}
if(cut+1<right)
{
quickSort(data, cut+1, right);
}
}
}
void quickSort(int *data, int length)
{
quickSort(data, length-length, length-1);
}
void print_array(int array[], int size) //this function is to print the array after we finish sorting and we can use it before the sorting begin
{
int j;
for (j=0; j<size; j++)
cout <<" "<< array[j]<<endl;
}//end of print_array
int main()
{
const int size = 5;
int arr[size]= {1, 17, 4, 6, 20};
quickSort(arr, 0, size);
print_array(arr, size);
system("pause");
return 0;
}
Höchstwahrscheinlich unkontrollierte Rekursion. Stellen Sie sicher, dass Ihr Base Case Sound ist. – stackptr
Nun habe ich alles überprüft, aber ich kann keinen Fehler sehen, nicht dass mein Code perfekt ist, aber ich bin gerade blind: P – magician
Ich empfehle Ihnen, einen Tracepoint in Visual Studio einzufügen und "Drucken eine Nachricht "und dann' {$ CALLSTACK} 'bei Ihrer Quicksort-Funktion eingeben. Es wird die Ausführung verlangsamen, aber Sie erhalten das Protokoll der Aufrufe im Ausgabefenster. – sergiol