Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 任何人都可以帮助在下面的快速排序代码中找到错误,它是';s显示分段故障(SIGSEGV) 快速排序代码_C++_Algorithm_Sorting_Segmentation Fault_Quicksort - Fatal编程技术网

C++ 任何人都可以帮助在下面的快速排序代码中找到错误,它是';s显示分段故障(SIGSEGV) 快速排序代码

C++ 任何人都可以帮助在下面的快速排序代码中找到错误,它是';s显示分段故障(SIGSEGV) 快速排序代码,c++,algorithm,sorting,segmentation-fault,quicksort,C++,Algorithm,Sorting,Segmentation Fault,Quicksort,我使用了一个分区函数来获取轴,然后递归解决了这个问题,但是在编译时它显示了分段错误 void swap(int* a,int* b) { int temp=*a; *a=*b; *b=temp; } int partition (int arr[],int start,int end) { int piviot=arr[end-1]; int pindex=start; for(int i=start;i<end-1;i++)

我使用了一个分区函数来获取轴,然后递归解决了这个问题,但是在编译时它显示了分段错误

void swap(int* a,int* b)
{
    int temp=*a;
    *a=*b;
    *b=temp;
}

int partition (int arr[],int start,int end)
{
    int piviot=arr[end-1];
    int pindex=start;
    for(int i=start;i<end-1;i++)
        if(arr[i]<=piviot) 
        swap(&arr[i],&arr[pindex++]);
    swap(&arr[end-1],&arr[pindex]);
    return pindex;
}

void quick_sort(int arr[],int start,int end)
{
    if(start<end)
    {
        int pindex=partition(arr,start,end);
        quick_sort(arr,start,pindex);
        quick_sort(arr,pindex,end);
    }

}
无效交换(int*a,int*b)
{
int temp=*a;
*a=*b;
*b=温度;
}
整数分区(整数arr[],整数开始,整数结束)
{
int-piviot=arr[end-1];
int pindex=开始;
对于(inti=start;i请查看此代码

void quick_sort(int arr[],int start,int end)
{
    if(start<end)
    {
        int pindex=partition(arr,start,end);
        quick_sort(arr,start,pindex);
        quick_sort(arr,pindex,end);
    }
}
未经测试

void quickSort(int arr[], int low, int high) 
{ 如果(低<高) { /*pi是分区索引,arr[p]现在是 在正确的地方*/ int pi=分区(arr、低、高)


}

在递归时,您似乎没有将枢轴从子数组中排除,这将破坏堆栈。进行第二次调用
快速排序(arr,pindex+1,end)
void quickSort(int arr[], int low, int high) 
    // Separately sort elements before 
    // partition and after partition 
    quickSort(arr, low, pi - 1); 
    quickSort(arr, pi + 1, high); 
}