有关冒泡排序的一个小疑问,我是菜鸟
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++)