快速排序 双向扫描法代码问题

int Partation2(int *a,int p,int r){
    int prior=a[p];
    int left=p+1;
    int right=r;
    while(left <= right){
    while((left <= right)&&a[left]<=prior)left++;
    while((left <= right)&&a[right]>prior)right--;
    if(left < right){
    int temp=a[left];
    a[left]=a[right];
    a[right]=temp;
    }
   }
   int temp=prior;
    prior=a[right];
    a[right]=temp;
    return right;    
}//双向扫描法 

void QuickSort(int *a,int p,int r){
    if(p<r){
 
        int q=Partation2(a,p,r);
        QuickSort(a,p,q-1);
        QuickSort(a,q+1,r);
    } 
}

int main(){
    int a[5]={2,3,1,8,5};
    QuickSort(a,0,4);
    for(int i=0;i<5;i++){
        cout<<a[i]<<endl;
    }
}

结果无法实现排序,本人菜鸡求解da

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^