|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<stdio.h>
int pai(int c[],int i,int j)
{
int a=i,b=j;
int tem;
while(a<=b)
{
while(c[a]<c[(i+j)/2])
{a++;}
while(c[b]>c[(i+j)/2])
{b--;}
if(a<=b)
{
tem=c[a];
c[a]=c[b];
c[b]=tem;
a++;
b--;
}
}
if(i<b)
{
pai( c,i,b);
}
if(a<j)
{
pai(c,a,j);
//pai(c,b,a);加了这个重新再排就正常了,自己感觉改的很差。
}
}
int main()
{
int n,i=0;
int j;
int c[]={1,0,4,6,3,9,10,8,5,7,2};
n=sizeof(c)/sizeof(int);
pai(c, i,n-1);
for( j=0;j<n;j++)
{
printf("%d ",c[j]);
}
return 0;
}
/*
1,0,4,6,3,9,10,8,5,7,2
|
1 0 4 6 3 2 10 8 5 7 9
|
1 0 4 6 3 2 10 8 5 7 9//仿小甲鱼的程序,不知道哪出了问题,人工排序才发现这一步就出错了,5和6还没排好序就另成各一派递归了,导致结果出错,求大神帮我改进一下,自己改的有点差。
*/
|
|