请问这个快排哪里出问题了

#include<stdio.h>
int num[100];
void swift(int l,int r)
{
    int left=l,right=r;
    int flag=1,pivot=num[left];
        while(flag&&left!=right)
        {
            if(num[right]<=pivot) num[left]=num[right],flag=0;
            right--;
        }
        while(!flag&&left!=right)
        {
            if(num[left]>=pivot) num[right]=num[left],flag=1;
            left++;
        }
    swift(l,left-1);
    swift(right+1,r);
}
int main()
{
    int N;
    scanf("%d",&N);
    for(int i=0;i<N;i++)
    {
        scanf("%d",&num[i]);
    }
    swift(0,N-1);
    for(i=0;i<N;i++)
    {
        printf("%d ",num[i]);
    }
return 0;
}

if(num[right]<=pivot) num[left]=num[right],flag=0; flag前面为;
if(num[left]>=pivot) num[right]=num[left],flag=1; flag前面为;