C 快速排序实现问题

C 快速排序实现问题,c,debugging,out-of-memory,quicksort,C,Debugging,Out Of Memory,Quicksort,我在执行快速排序算法时遇到问题。 我遇到了一个错误,但无法找到问题所在。如果有人能指出错误所在,我将非常感激 #include <stdio.h> #include <stdlib.h> void main(){ int arr[] = {10, 7, 8, 9, 1, 5}; int n = sizeof(arr)/sizeof(arr[0]); quickSort(arr,0,n-1); printArray(arr,0,n-1);

我在执行快速排序算法时遇到问题。 我遇到了一个错误,但无法找到问题所在。如果有人能指出错误所在,我将非常感激

#include <stdio.h>
#include <stdlib.h>

void main(){
    int arr[] = {10, 7, 8, 9, 1, 5};
    int n = sizeof(arr)/sizeof(arr[0]);
    quickSort(arr,0,n-1);
    printArray(arr,0,n-1);
}

//Quicksort Function
void quickSort(int arr[],int low,int high){
    if (low < high){

        int pi=partition(arr,low,high);
        quickSort(arr,low,pi-1);//takes care of lower set of numbers
        quickSort(arr,pi+1,high);//takes care of higher elements above pivot
    }
}

//Function for partitioing, in my program i am cosidering pivot as the element at high or the last element
int partition(int arr[],int low,int high){
    int i,j;
    i=(low-1);
    int pivot=arr[high];
    for(j=low;j<=high;j++){
        if(arr[j]<=pivot){
            i++;
            swap(&arr[i], &arr[j]);
        }
    }
    swap(&arr[i+1], &arr[high]);
    return (i+1);
}

//function to print array
void printArray(int arr[],int low,int high){
    int i;
    for(i=low;i<=high;i++){
        printf("%d ",arr[i]);
    }
}

//function to swap two elements of array
void swap(int* a, int* b)
{
    int t = *a;
    *a = *b;
    *b = t;
}
#包括
#包括
void main(){
int arr[]={10,7,8,9,1,5};
int n=sizeof(arr)/sizeof(arr[0]);
快速排序(arr,0,n-1);
打印阵列(arr,0,n-1);
}
//快速排序函数
无效快速排序(整数arr[],整数低,整数高){
如果(低<高){
int pi=分区(arr、低、高);
快速排序(arr,low,pi-1);//处理较低的数字集
快速排序(arr,pi+1,high);//处理pivot上方的较高元素
}
}
//用于分区的函数,在我的程序中,我将轴作为高位元素或最后一个元素
整数分区(整数arr[],整数低,整数高){
int i,j;
i=(低-1);
int pivot=arr[高];

对于(j=low;j快速排序算法的简单实现

 void q_sort(int v[],int left,int right)
 {
   int i,last;

   if(left>=right)
   return;

   swap(v,left,(left+right)/2);
   last=left;

   for(i=left+1;i<=right;i++)
      if(v[i]<v[left])
        swap(v,++last,i);

   swap(v,left,last);
   q_sort(v,left,last-1);
   q_sort(v,last+1,right);  
}

void swap(int v[],int i,int j)
{
   int temp;
   if(i!=j){
       temp=v[i];
       v[i]=v[j];
       v[j]=temp;
   }
}
void q_排序(int v[],int左,int右)
{
int i,最后;
如果(左>=右)
返回;
交换(v,左,(左+右)/2);
最后=左;

对于(i=left+1;i问题在于分区()的这个语句-


if(arr[j]什么错误?并格式化您的代码。您是否尝试过在算法的每次迭代中打印要排序的项的状态,并在手动排序时将其与执行的输出进行比较?您做了哪些尝试来查找错误?因此不适合您。欢迎访问stackoverflow.com。请花一些时间阅读,尤其是特别是名为和的部分。还有请和。我还建议您花一些时间阅读Eric Lippert的文章,并学习如何使用调试器逐行检查代码。
        if(arr[j]<=pivot){
        if(arr[j]<pivot){