请高手帮小弟我看看这个快排哪里出错了

请高手帮我看看这个快排哪里出错了?
C/C++ code
#include<iostream>
using namespace std;
int Partition(int a[],int low,int high){
  int pivot=a[low];//第0个位置记录枢轴值 
     while (low < high)
     {
        while (low<high && pivot<a[high]) 
        {
            --high;  //将比枢轴小的记录移到低端
        }
        a[low]=a[high];
        low++;
        while (low<high &&pivot>a[low])
        {
             low++;
        }
        a[high]=a[low];
            high--;
     }
    

     if(low>=high)
        {
            a[low]=pivot;
            
            cout<<"返回的low值是"<<low<<endl;
            for(int i=0;i<low;i++){
                cout<<a[i]<<" ";}
        cout<<'\n';
     
            return  low;
        }
     else
     {
         a[high]=pivot;
         cout<<high<<endl;;
         return high;
     }

}
void QuickSort(int a[],int low,int high)
{
int pivotLocation;//记录枢轴位置
    if (low<high)//保证区间长度大于1
  {
    pivotLocation=Partition(a,low,high);//划分区间,并得到枢轴位置
    QuickSort(a,low,pivotLocation-1);//对枢轴左区间进行快排
    QuickSort(a,pivotLocation+1,high);//对枢轴右区间进行快排
  }
}    
int main()
{
int b[10]={6,7,4,1,52,33,2,1,4,1};

Partition(b,0,9);
for(int i=0;i<10;i++){
        cout<<b[i]<<" ";
    }
cout<<endl;

QuickSort(b,0,9);
    for(int i=0;i<10;i++){
        cout<<b[i]<<" ";
    }
    
    return 0;
}


不知道哪一步出错了,求解答

------解决方案--------------------
高位与低位交换时,需要加if(low<high) 判断
C/C++ code

#include<iostream>
using namespace std;
int Partition(int a[],int low,int high){
  int pivot=a[low];//第0个位置记录枢轴值 
     while (low < high)
     {
        while (low<high && pivot<a[high]) 
        {
            --high;  //将比枢轴小的记录移到低端
        }
        if(low<high) a[low++]=a[high];//这里要加 low<high条件 因为可能有low==high的情况出现

        while (low<high &&pivot>=a[low])
        {
             low++;
        }
        if(low<high) a[high--]=a[low];
          
     }
    

     if(low>=high)
        {
            a[low]=pivot;
            
//             cout<<"返回的low值是"<<low<<endl;
//             for(int i=0;i<low;i++){
//                 cout<<a[i]<<" ";}
//         cout<<'\n';
     
            return  low;
        }
     else
     {
         a[high]=pivot;
//          cout<<high<<endl;;
         return high;
     }

}
void QuickSort(int a[],int low,int high)
{
int pivotLocation;//记录枢轴位置
    if (low<high)//保证区间长度大于1
  {
    pivotLocation=Partition(a,low,high);//划分区间,并得到枢轴位置
    QuickSort(a,low,pivotLocation-1);//对枢轴左区间进行快排
    QuickSort(a,pivotLocation+1,high);//对枢轴右区间进行快排
  }
}    
int main()
{
    int b[10]={6,7,4,1,52,33,2,1,4,1};

    Partition(b,0,9);
    for(int i=0;i<10;i++){
        cout<<b[i]<<" ";
    }
    cout<<endl;

    QuickSort(b,0,9);
    for(int i=0;i<10;i++){
        cout<<b[i]<<" ";
    }
    
    return 0;
}