c语言 选择排序 for循环代码出错
循环代码不知道哪里错了帮忙看一下voidXuanZe(int*p){intb[51],i,j,compare=0,move=0;for(i=0;i<51;i++)b[i]...
循环代码不知道哪里错了帮忙看一下
void XuanZe(int *p){
int b[51],i,j,compare=0, move=0;
for(i=0;i<51;i++) b[i] = *(p+1);{ compare=i; for(j=i+1;j<51;j++)
if(b[j]<b[compare]) compare=j; if(compare!=i) { move=b[compare]; b[compare]=b[i]; b[i]=move; }}printf("采用选择排序:\n"); for(i=1; i<51; i++) { r[i]=b[i]; printf("%3d", b[i]); if(i%10==0) printf("\n"); } printf("选择排序比较次数%d,移动次数%d\n", compare, move);}
全部代码截图: 展开
void XuanZe(int *p){
int b[51],i,j,compare=0, move=0;
for(i=0;i<51;i++) b[i] = *(p+1);{ compare=i; for(j=i+1;j<51;j++)
if(b[j]<b[compare]) compare=j; if(compare!=i) { move=b[compare]; b[compare]=b[i]; b[i]=move; }}printf("采用选择排序:\n"); for(i=1; i<51; i++) { r[i]=b[i]; printf("%3d", b[i]); if(i%10==0) printf("\n"); } printf("选择排序比较次数%d,移动次数%d\n", compare, move);}
全部代码截图: 展开
1个回答
展开全部
1)你的选择排序函数明星有问题,第一个for循环结束,只执行了b[i]=*(p+1),数组里成了相同的数,此处应该是p+i更合适。
2)上面循环结束后i=51,你后面让j=i+1,后面的循环也就不可能执行,后面的判断compare!=i也就永远成立。
3)你要打印移动和交换次数,其中的compare和move和这两项操作没关系,记录的是移动的数值,怎么可能是次数。
2)上面循环结束后i=51,你后面让j=i+1,后面的循环也就不可能执行,后面的判断compare!=i也就永远成立。
3)你要打印移动和交换次数,其中的compare和move和这两项操作没关系,记录的是移动的数值,怎么可能是次数。
追问
初学者,不懂....
追答
如果看不懂,就不要尝试去写复杂的程序,先把C语言基础学好再回头去改代码。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询