黑马程序员技术交流社区
标题:
冒泡排序的问题
[打印本页]
作者:
wxh794708907
时间:
2015-7-20 19:44
标题:
冒泡排序的问题
#include <stdio.h>
void maoPao(int arr[],int len){ // int len的作用是为了将数组的长度定义出来
int i;
int j;
int temp;
for(i = 0;i<len-1;i++){ //外层for循环
for(j = 0;j<len -1 -i;j++){ //内存for循环 实现数组中内容的对换;j<len -1-i的原因是 外层for循环进行了一次对比之后就会少一个比较
if(arr[j]>arr[j+1]){
temp =arr[j]; //着这一步往下三步都是实现位置的兑换;
arr[j] =arr[j+1];
arr[j+1] =temp;
}
}
}
}
int main(){
int f1[10]={34,455,555,666,6,7,77,88,887,6}; //这是定义了一个随机序列的数组;
maoPao(f1,10);
int i;
for(i = 0;i<10;i++){
printf("%d\t",f1[i]); //按顺序来显示数组中的值;
}
return 0;
}
在这个程序里面,我实在是分不清;后面输出的是到底使用i还是j呢?就像是arr[]这个数组里面是写i还是j 它的依据是什么?
求高手解答
作者:
liusuizuoyou
时间:
2015-7-21 19:53
外层循环是由 i 的的自增控制 一共循环 len-1次 就可以把顺序排好
内层循环 由 j 控制 每次循环换都是 arr[j] arr[j+1] 比较大小(相邻的两个数组元素比较大小),如果前者比较大 那么就交换值,直到本次循环结束,那么最大值 ,也就自然而然的,放到了最后面。
作者:
408205555
时间:
2015-7-21 20:11
后面输出的是到底使用i还是j呢?
- 你所指的输出是指printf()吗?因为你的printf()放到了for循环里面,for循环()里面的变量是i你就使用i,是j你就使用j,当然我也可以使用a,b,c,d任何一个字符。
就像是arr[]这个数组里面是写i还是j 它的依据是什么?
- 写i或是写j并不是依据什么,第一是个人习惯,你也可以外层使用a,内层使用b。第二外层使用i内层使用j是为了将内外循环区别开来,不要在程序执行的时候发生混乱。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2