所以我正在实施快速排序,并且一旦我启动程序就会出现错误。我认为逻辑明智的一切应该没问题。我认为这个问题在swap函数中,因为如果我把它注释掉了,它不会崩溃。快速排序实施崩溃
#include <iostream>
using namespace std;
void swap1(int& x, int& y)
{
int tmp = x;
x = y;
y = x;
}
int partition(int arr[], int cof, int length)
{
int x = arr[length];
int j = cof -1;
for(int i = cof; length-1; i++)
{
if(arr[i] <= x)
{
i++;
swap1(arr[i], arr[j]);
}
swap1(arr[i+1], arr[length]);
}
return j++;
}
void quick_sort(int arr[], int cof, int length)
{
if(cof < length)
{
int q = partition(arr, cof, length);
quick_sort(arr,cof, q-1);
quick_sort(arr,q+1, length);
}
}
int main()
{
int arr[]={1, 3, 2, 5, 4};
quick_sort(arr, 1, 5);
for(int i = 0; i < 5; i++)
{
cout << arr[i] << endl;
}
return 0;
}
他有很多错误,这是肯定的。只是这些改变也不能解决它。 +1。 –
+1 - 问题的最完整列表。 – pstrjds