我发现我如此写根本排序不了,也不知道问题在哪,希望各位帮忙解答一下 谢谢
https://blog.csdn.net/chenz71/article/details/128204278?spm=1001.2014.3001.5501%EF%BC%8C
可以看下我主页的博客
#include <stdio.h>
void quicksort(int left,int right,int* a)
{
int i,j,t,temp;
if(left>right)
return;
temp = a[left]; //temp中存放基准数
i = left;
j = right;
while(i != j)
{
// 先从右往左找
while(a[j]>=temp && j>i)
{
j--;
}
while(a[i]<=temp && i<j)
{
i++;
}
//交换
if(i<j)
{
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
//将基准数归位
a[left] = a[i];
a[i] = temp;
quicksort(left, i-1,a); // 递归 继续处理左边序列
quicksort(i+1, right,a);// 递归 继续处理右边序列
}
int main()
{
int i =0;
int n= 0;
int a[101]={0};
scanf("%d",&n);
for( i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
quicksort(0,n-1,a);
for( i=0;i<n;i++)
{
printf("%d ",a[i]);
}
return 0;
}
你为什么把交换写进while里
供参考:https://blog.csdn.net/weixin_61453872/article/details/121481223