c语言冒泡法排序,其中第九行if(a[j]>a[j+1])开始,为什么不是if(a[i]>a[i+1]) 呢

#include <stdio.h> int main() {int i,j,t,a[10]; printf("Please input 10 integers:尀n"); for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<9;i++) /* 冒泡法排序 */ for(j=0;j<10-i-1;j++) if(a[j]>a[j+1]) {t=a[j];/* 交换a[i]和a[j] */ a[j]=a[j+1]; a[j+1]=t; }
2026年09月23日 23:11
有3个网友回答
网友(1):

这是冒泡排序算法决定的。冒泡排序算法共需要n趟比较(n为元素个数),每趟两两比较相邻元素。外循环变量i决定趟数(这里i=0...9),内循环变量j控制每趟比较的元素(这里j=0...9-i),因此是if(a[j]>a[j+1])开始。

网友(2):

这里两层循环的意思是
i那一层是用来管理冒泡的长度
比如第一次冒泡比较9次,最小的数到了最后一个
第二冒泡你就不需要再看最好一个了,只需要再比较8次就好了,i就是用来记录这个的

j那一层循环才是真正的冒泡算法,比较,交换。

网友(3):

当然不是,你的冒泡法是把最大的沉下去,若if(a[i]>a[i+1])这样的话,那不在内层循环都是比较a[0]和a[1](第一次循环),而且最后,也就是把最大的数沉到最下面啦!并没有完成排序