慕虎3274587
2018-09-11 08:44
for(i=8; i>=0; i--)
你可能忘记了,arr[9]代表的是第10个数字。当i=8,j=8时,比较的是arr[j]<arr[j+1],即arr[8]<arr[9],已经比较了所有数字l。
for(i=9; i>=0; i--)
{
for(j=0;j<=8;j++)
{
if(arr[j] > arr[i]) //当前面的数比后面的数大时
{
double temp; //定义临时变量temp
temp = arr[j]; //将前面的数赋值给temp
arr[j] = arr[i]; //前后之数颠倒位置
arr[i] = temp; //将较大的数放在后面
}
}
}
因为当9个数都排好序时第10个数就已经在应该在的位置了
因为后面排序时,比较的是j和j+1,当j=i时,j=8,j+1就等于9了。
你要是让i=9也可以,但是后面就要j和j-1比较了
C语言入门
926020 学习 · 20793 问题
相似问题
回答 4
回答 3
回答 5
回答 2
回答 3