这个快排有什么问题啊??为什么过不去

来源:百度知道 编辑:UC知道 时间:2024/06/17 05:59:43
#include <stdio.h>
int a[10];
void qsort(int a[],int s,int t)
{int i,j,temp;
i=s;
j=t;
if(s <t)
{temp=a[s];
while(i!=j)
{while(j>i&&a[j]>temp)
j--;
if(j>i)
{a[i]=a[j];
i++;
}
while(i <j&&a[i] <temp)
i++;
if(i <j)
{a[j]=a[i];
j--;
}
}
a[i]=temp;
qsort(a,s,i-1);
qsort(a,i+1,t);
}
}

int main()
{
int n,i;
printf("请输入:");
scanf("%d\n",&n);
for(i=0;i <n;i++)
scanf("%d",&a[i]);
qsort(a,1,n);
for(i=0;i <n;i++)
printf("%d ",a[i]);
return 0;
}

#include <stdio.h>
int a[100];
int jiaohuan(int a[],int s,int t)
{ int i,j,temp;
i=s;
j=t;
temp=a[s];
while(i<j)
{while(j>i&&a[j]>=temp)
j--;
a[i]=a[j];
while(i<j&&a[i]<=temp)
i++;
a[j]=a[i];
}
a[i]=temp;
return i;
}
void qsort(int a[],int s,int t)
{ int w;
if(s<t) { w=jiaohuan(a,s,t);
qsort(a,s,w-1);
qsort(a,w+1,t);
}
}

int main()
{
int n,i;
printf("输入排序个数:");
scanf("%d\n",&n);
for(i=1;i <=n;i++)
scanf("%d",&a[i]);
qsort(a,1,n);
for(i=1;i <=n;i++)
printf("%d ",a[i]);
getchar();getchar();getchar();getchar();
return 0;
}
//快排是递归 要有一个交换数组数据的函数再递归调用qsort