快速排序我这么写为什么实现不了

我发现我如此写根本排序不了,也不知道问题在哪,希望各位帮忙解答一下 谢谢

img

https://blog.csdn.net/chenz71/article/details/128204278?spm=1001.2014.3001.5501%EF%BC%8C
可以看下我主页的博客

#include <stdio.h>
 
void quicksort(int left,int right,int* a)
{
 
    int i,j,t,temp;
    if(left>right)
    return;
 
 
    temp = a[left]; //temp中存放基准数
    i = left;
    j = right;
 
    while(i != j)
    {
        // 先从右往左找
        while(a[j]>=temp && j>i)
        {
            j--;
        }
        while(a[i]<=temp && i<j)
        {
            i++;
        }
        
        //交换
        if(i<j)
        {
            t = a[i];
            a[i] = a[j];
            a[j] = t;
        }
    }
 
    //将基准数归位
    a[left] = a[i];
    a[i] = temp;
    
    quicksort(left, i-1,a); // 递归 继续处理左边序列
    quicksort(i+1, right,a);// 递归 继续处理右边序列
    
}
 
int main()
{
    int i =0;
    int n= 0;
    int a[101]={0};
    scanf("%d",&n);
    
    for( i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    
    quicksort(0,n-1,a);
 
    for( i=0;i<n;i++)
    {
        printf("%d ",a[i]);
    }
    
    return 0;
}
 

你为什么把交换写进while里

供参考:https://blog.csdn.net/weixin_61453872/article/details/121481223