首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

有关冒泡排序的一个小疑问,小弟我是初学者

2012-03-12 
有关冒泡排序的一个小疑问,我是菜鸟voidmain()//降順{inta[10]inttinti,jprintf( pleaseinput10values

有关冒泡排序的一个小疑问,我是菜鸟
void   main()                                                                                                         //降順
{
int   a[10];
int   t;
int   i,j;
printf( "please   input   10   values! ");
for(i   =   0;   i   <   10;   i++)
scanf( "%d ",&a[i]);
for(j   =   0;   j   <   10;   j++)
for(i   =   0;   i   <   10-j;   i++)
if(a[i]   <   a[i+1])
{
t   =   a[i+1];   a[i+1]   =   a[i];   a[i]   =   t;
}
printf( "the   sort   number   is: ");
for(i   =   0;   i   <   10;   i++)
printf( "%d   ",a[i]);
}

结果出现1245120   90   8   7   7   6   5   4   3   2   press   any   key   to   continue!
如果我把   if(a[i]   <   a[i+1])
改为升序if(a[i]   >   a[i+1])结果正常
这么一个奇怪现象是怎么回事啊???小弟在线等答案


[解决办法]
if(a[i] < a[i+1])

当i=9时, a[i+1]=a[10]
这时数组越界, 程序运行未定义
可能出错, 可能出现奇怪的结果
[解决办法]
得理解思想
[解决办法]
for(i = 0; i < 10-j; i++)
==》
for(i = 0; i < 10-j-1; i++)

热点排行