我把一个整型数组作为一个整型数组的输入,我期待一个排序后的整型数组的输出,但是没有输出。
我尝试使用一个递归快速排序算法,它将一个int数组作为输入,并给予一个排序数组作为输出。我希望排序数组显示在终端中,但没有输出。这是代码
#include <iostream>
#define SIZE 10
using namespace std;
void swap(int* a, int* b)
{
int temp = *a;
*a = *b;
*b = temp;
}
int partition(int* array,int p, int q)
{
int key = array[p];
int i = p;
for(int j = p+1; j <= q; j++ )
{
if(key > array[j])
{
i++;
swap(&array[i],&array[j]);
}
}
swap(&array[i],&array[p]);
return i;
}
void quicksort(int* array,int p,int q)
{
if(p < q)
{
int r = partition(array,p,q);
quicksort(array,p,r-1);
quicksort(array,r,q);
}
}
int main()
{
int unsorted[SIZE] = {6,2,5,-1,11,3,17,-9,1,10};
quicksort(unsorted,0,SIZE-1);
cout << "The sorted array" << endl;
for(int i = 0; i < SIZE; i++)
{
cout << unsorted[i] <<" ";
}
}
1条答案
按热度按时间cnwbcb6i1#
你粘贴的代码在
quicksort
函数中输入了无限递归。另外,我建议使用std::vector
并通过引用传递它,而不是使用C风格的数组。std::vector
是一个更灵活的容器。以下是更正后的代码https://onlinegdb.com/q4LxWciVC:
输出:
已排序的数组1 2 3 5 6 10 11 17