想了很久,还是搞不明白外层内层循环为什么是j在外头i在里头??
代码如下:
#include
int main()
{
int i,j,t;
int a[10];
printf("input 10 number:\n");
for(i=0;i<10;i++){
scanf("%d",&a[i]);
}
for(j=0;j<9;j++){ //限制多少趟比较,n-1
for(i=0;i<9-j;i++){ //限制某趟要进行两两比较的次数,n-j
if(a[i]>a[i+1]){
t=a[i];a[i]=a[i+1];a[i+1]=t;
}
}
printf("the number is:\n");
for(i=0;i<10;i++){
printf("%d",a[i]);
}
printf("\n");
}
}
--------
越想越混乱,以及n-1是9,那n就是10,为什么到了第三个循环里头还是9,不是n-j吗??小白刚学不太理解这些,虽然查了很多类似的题目,还是看不懂,烦请诸位解答一二,我要傻掉了,谢谢!
冒泡排序的原理就是比较相邻两个数大小大数往右走,每一趟右边的数都会变成最大的,循环多次后大到排序的目的
我没看明白你最后那段话的意思
这个算法你要是想不明白的话,你就在纸上写十个数,然后按照算法里的循环一步一步走,整个过程走完了,你应该就明白了