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);}
全部代码截图:
展开
 我来答
songcitc
2013-12-12 · TA获得超过397个赞
知道小有建树答主
回答量:170
采纳率:0%
帮助的人:201万
展开全部
1)你的选择排序函数明星有问题,第一个for循环结束,只执行了b[i]=*(p+1),数组里成了相同的数,此处应该是p+i更合适。
2)上面循环结束后i=51,你后面让j=i+1,后面的循环也就不可能执行,后面的判断compare!=i也就永远成立。
3)你要打印移动和交换次数,其中的compare和move和这两项操作没关系,记录的是移动的数值,怎么可能是次数。
追问
初学者,不懂....
追答
如果看不懂,就不要尝试去写复杂的程序,先把C语言基础学好再回头去改代码。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式