c语言,输出语句没有执行

#include <stdio.h>
 
void dayin(int array[], int max)    //max为数组元素最大值
{
 
    for(int i = 0; i < max; i++)
    {
        printf("%-3d", array[i]);
    }
    printf("\n");
}
void swap(int *a, int *b)
{
    int temp;
    temp = *a;
    *a = *b;
    *b = temp;
}
void quicksort(int array[], int n, int low, int high)
{
    int i=low, j=high+1;
        while(i<j){
        while(array[++i]<array[low]&&i<high);
        while(array[--i]>array[low]);
        if(i>=j) break;
         else swap(&array[i], &array[j]);
        }
        if(array[i] >= array[low])  // 取等>=
        {
            i--;
        }
 
        swap(&array[low], &array[i]);
         dayin(array, n);
 
        quicksort(array, n, low, i);
        quicksort(array, n, j, high);
    
}
 
// 主函数
int main()
{
    int i,n,array[30];
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
    scanf("%d",&array[i]);
    }
    quicksort(array, n, 0, n-1);  // 快速排序

    return 0;
}

这个快速排序输出语句好像没有执行,大佬可以指导一下吗,谢谢

第一个while循环i++等于1;第二个whilei--又等于0,导致i一直都是0,永远无法跳出while(i<j)循环。

while (array[++i] < array[low] && i < high);
while (array[--i] > array[low]);