#include <stdio.h>
void Quick_sort(int a[],int left,int right)
{
int i=left,j=right;
int center = a[(i+j)/2];
int tran;
while(i <= j)
{
while(a[i] < center)
{
i++;
}
while(a[j] > center)
{
j--;
}
if(i<=j)
{
tran = a[i];
a[i] = a[j];
a[j] = tran;
i++;j--;
}
}
if(left < j)
{
Quick_sort(a,left,j);
}
if(i < right)
{
Quick_sort(a,i,right);
}
}
int main()
{
int m;
printf("请输入要创建的数组元素个数:");
scanf("%d",&m);
int u[m];
for(int i=0; i<m; i++)
{
int h;
printf("请输入第%d个元素的值:",i+1);
scanf("%d",&h);
u[i] = h;
}
Quick_sort(u,0,m-1);
for(int i=0; i<m;i++)
{
printf("%d ",u[i]);
}
}
运行结果
错误示范
#include <stdio.h>
void Quick_sort(int a[],int left,int right)
{
int i=left,j=right;
int center = (i+j)/2;
int tran;
while(i <= j)
{
while(a[i] < a[center])
{
i++;
}
while(a[j] > a[center])
{
j--;
}
if(i<=j)
{
tran = a[i];
a[i] = a[j];
a[j] = tran;
i++;j--;
}