邓美丽
2016-05-25 23:36
会不会存在if(arr[j]<arr[j+1])如果存在怎么解释
j=0时
数值交换后arr[0]=1.77,arr[1]=1.78
j=1时
没交换时arr[2]=1.82 arr[1]<arr[1+1]怎么解释啊
if(arr[j]<arr[j+1])
{
temp=arr[j];//前面声明temp
arr[j]=arr[j+1];
arr[j+1]=temp;
}
如果满足arr[j]<arr[j+1],那么arr[j]和arr[j+1]就会交换值,如果不满足这个条件的话就不会交换例如arr[j]>arr[j+1],那么编译器就不会去交换arr[j]和arr[j+1]的值.
好比开始是arr[0]=3,arr[1]=4,arr[2]=2.
当J=0时arr[0]和arr[1]值交换,arr[0]=4,arr[1]=3;
当J=1时arr[1]>arr[2],arr[1]和arr[2]的值不会交换,既arr[1]还是=3, arr[2]还是=2.
这段主要是将相邻两个数进行比较,
如果前面的数 > 后面的数 就将前后数对调
如果前面的数 < 后面的数 就不需要做什么
总之,两相邻数比较后的结果是将较大的数放到后面,这个较大的数再与其后面相邻的数比较,保证每次比较后,较大的数都在后者的位置,这样一串数字中,最大的数就跑到了最后面,这就是帽泡排序。,
C语言入门
926025 学习 · 20793 问题
相似问题
回答 2