小弟我只想知道小弟我这段代码为什么运行后不能正确排序,检查了好久也没发现异常,感觉自己要崩溃了·

我只想知道我这段代码为什么运行后不能正确排序,检查了好久也没发现错误,感觉自己要崩溃了···
#include<stdio.h>
int main()
{
int array[]={5,7,89,52,45,68,2,6,84,75,68,12,84,76,77,48,68};
int i;
void sort(int *array,int min,int max);
sort(array,0,16);
for(i=0;i<17;i++)
printf("%3d",array[i]);
return 0;
}
int Quicksort(int *array,int m,int n)
{
int key=*(array+m);
while(m<n)
{
while(*(array+n)>=key&&n<m)
n--;
if(n>m)
{
*(array+m)=*(array+n);
m++;
}
while(*(array+m)<=key&&n<m)
m++;
if(n>m)
{
*(array+n)=*(array+m);
n--;
}
}
*(array+m)=key;
return m;
}
void sort(int *array,int min,int max)
{
int mid;
if(min<max)
{
mid=Quicksort(array,min,max);
sort(array,min,mid-1);
sort(array,mid+1,max);
}
}
c语言 快速排序

------解决方案--------------------
while(*(array+n)>=key&&n<m)//n<m改成n>m 因为你的n是大于m的,传进来
 n--;
if(n>m)
 {
 *(array+m)=*(array+n);
 m++;
 }
 while(*(array+m)<=key&&n<m)//n<m 改成n >m