#include<stdio.h>
int get_mid(int a[],int left,int right);
void quick_sort(int a[],int left,int right);
int main()
{
int a[]={10,19,2,5,18,3,5};
quick_sort(a,0,6);
for(int i=0;i<(sizeof(a));i++)
{
printf("%d",a[i]);
}
return 0;
}
int get_mid(int a[],int left, int right)
{
int flag;
flag=a[left];
while(left<right)
{
while(a[right]>flag&&left<right)
{
right--;
}
a[left]=a[right];
while(a[left]<flag&&left<right)
{
left++;
}
a[right]=a[left];
}
a[left]=flag;
return left;
}
void quick_sort(int a[],int left,int right)
{
int i;
if(left<right)
{
int mid;
mid=get_mid(a,left,right);
quick_sort(a,left,mid-1);
quick_sort(a,mid+1,right);
}
}
while(a[right]>=flag&&left<right) // 是 >= 不是 >
{
right--;
}
a[left]=a[right];
while(a[left]<=flag&&left<right) // 是 <= 不是 <
{
left++;
}
你题目的解答代码如下:
#include<stdio.h>
int get_mid(int a[],int left,int right);
void quick_sort(int a[],int left,int right);
int main()
{
int a[]={10,19,2,5,18,3,5};
quick_sort(a,0,6);
for(int i=0;i<(sizeof(a)/sizeof(int));i++) // 数组长度计算公式是sizeof(a)/sizeof(int)
{
printf("%d ",a[i]);
}
return 0;
}
int get_mid(int a[],int left, int right)
{
int flag;
flag=a[left];
while(left<right)
{
while(a[right]>=flag&&left<right) // 是 >= 不是 >
{
right--;
}
a[left]=a[right];
while(a[left]<=flag&&left<right) // 是 <= 不是 <
{
left++;
}
a[right]=a[left];
}
a[left]=flag;
return left;
}
void quick_sort(int a[],int left,int right)
{
int i;
if(left<right)
{
int mid;
mid=get_mid(a,left,right);
quick_sort(a,left,mid-1);
quick_sort(a,mid+1,right);
}
}
如有帮助,望采纳!谢谢!