VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 673|回复: 3

[求助] 选择排序的程序

[复制链接]
11_avatar_middle
在线会员 发表于 2015-12-6 14:34:29 | 显示全部楼层 |阅读模式
3驿站币
#include <stdio.h>
int main()
{
int i,j;
int a[10];
int iTemp;
int iPos;
printf("为数组元素赋值:\n");
/*从键盘为数组元素赋值*/
for(i=0;i<10;i++)
{
printf("a[%d]=",i);
scanf("%d", &a[i]);       
}
/*从小到大排序*/
for(i=0;i<9;i++) /*设置外层循环为下标0~8的元素*/
{
iTemp = a[i]; /*设置当前元素为最小值*/
iPos = i;        /*记录元素位置*/

for(j=i+1;j<10;j++) /*内层循环i+1到9*/
{
if(a[j]<iTemp) /*如果当前元素比最小值还小*/
{
iTemp = a[j];        /*重新设置最小值*/
iPos = j; /*记录元素位置*/
}
}
/*交换两个元素值*/
a[iPos] = a[i];
a[i] = iTemp;
}
/*输出数组*/
for(i=0;i<10;i++)
{
printf("%d\t",a[i]);        /*输出制表位*/
if(i == 4)        /*如果是第5个元素*/
printf("\n");        /*输出换行*/
}

return 0;        /*程序结束*/
}
想问下大家个问题,这程序里面第二个for里面的外层循环赋值iPos = i;然而里面嵌套的内层for循环赋值iPos = j;那么最终应该是iPos = j,那接下来a[iPos] = a[i]中的ipos值应该就是j了,而之前赋值的iPos = i好像没起作用啊。但我去掉iPos = i语句时运行结果就不对了,想问下这是为什么呢?谢谢





上一篇:VS2015与VS2010同时安装的问题
下一篇:飞机上的控制面板仿真问题
51_avatar_middle
online_admins 发表于 2015-12-7 15:49:06 | 显示全部楼层
如果 for(j=i+1;j<10;j++) 这个 for 循环里面的 if(a[j]<iTemp) 条件不成立呢?
iPos = j; 这句话就不可能走了,对吧?
所以 iPos = i; 这条语句还是有很大作用的

评分

参与人数 1驿站币 +1 热心值 +1 收起 理由
11_avatar_small 响水潭88 + 1 + 1 赞一个!

查看全部评分

20_avatar_middle
在线会员 发表于 2015-12-8 11:21:07 | 显示全部楼层
初始化的意思吧?
11_avatar_middle
ico_lz  楼主| 发表于 2015-12-9 21:31:41 | 显示全部楼层
Marioon 发表于 2015-12-8 11:21
初始化的意思吧?

就是管理员说的那样了
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-4-19 09:20

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表