include[HTML_REMOVED]
int n;
int q[1000];
void quick_sort(int q[],int l,int r)
将数组q,数组首尾下标l,r输入快排函数quick_sort
{
if(l>=r)return;
#如果lr交叉,则说明数列已经被分割成单元素数列,排序完毕
int x=q[(l+r)/2];
#将数组中间位数值作为分界基准x
int i=l-1;
#设置从数组首位开始计数的指针i
int j=r+1;
#设置从数组末尾开始计数的指针j
while(i<j)
#在指针交叉前遍历一遍数组,将小于x的值置于左侧,大于x的值置于右侧
{
do i++;while(q[i]<x);
#当i指向的数值小于分界基准x时继续向后移动
#如数值大于x,则扣留当前元素,跳转到j指针
do j--;while(q[j]>x);
#当j指向的数值大于分界基准x时继续向前移动
#当数值小于x,则将其与之前扣留的元素互换
if(i<j)
#如果指针未交叉,则执行交换
{
int temp=q[i];
q[i]=q[j];
q[j]=temp;
}
#交换完成后,继续让i开始移动
}
#递归,将x区分开的两部分分别再次进行处理
quick_sort(q,l,j);
quick_sort(q,j+1,r);
}
int main()
{
scanf(“%d”,&n);
for(int i=0;i<n;i)
{
scanf(“%d”,&q[i]);
}
quick_sort(q,0,n-1);
for(int i=0;i<n;i)
{
printf(“%d “,q[i]);
}
return 0;
}