A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wxh794708907 中级黑马   /  2015-7-20 19:44  /  546 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

#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 它的依据是什么?
求高手解答

2 个回复

倒序浏览
外层循环是由  i 的的自增控制  一共循环 len-1次 就可以把顺序排好
内层循环 由 j 控制      每次循环换都是 arr[j]   arr[j+1]   比较大小(相邻的两个数组元素比较大小),如果前者比较大  那么就交换值,直到本次循环结束,那么最大值 ,也就自然而然的,放到了最后面。
回复 使用道具 举报
后面输出的是到底使用i还是j呢?
- 你所指的输出是指printf()吗?因为你的printf()放到了for循环里面,for循环()里面的变量是i你就使用i,是j你就使用j,当然我也可以使用a,b,c,d任何一个字符。
就像是arr[]这个数组里面是写i还是j 它的依据是什么?
- 写i或是写j并不是依据什么,第一是个人习惯,你也可以外层使用a,内层使用b。第二外层使用i内层使用j是为了将内外循环区别开来,不要在程序执行的时候发生混乱。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马