for循环嵌套求指导冒泡法

img


这种循环一直理解不了怎么办呀
为什么要有两个变量
为什么有这么多for语句
嵌套的作用是啥呀

第一个for循环的意思是:让你在控制台输入6个数,放入x数组中。
第二个for循环的意思是:我们知道冒泡排序的原理是,每个数字都要和其他的数字比较一遍,这里我们有6个数字,当然得比较6次。
第三个for循环(嵌套)的意思是:如果前一个数字小于后面的数字,就交换,这里我们看到它想将大数排到最前面。
比如我们有 6个数:1 5 7 9 4 2
第一次排序 : 分析:1<5 ,交换。变成5 1 7 9 4 2,j+1后,1<7,交换 ,变成 5 7 1 9 4 2,j+1,1<9,交换,变成5 7 9 1 4 2.......最后变成5 7 9 4 2 1
第二次排序:5 <7,交换,变成7 5 9 4 2 1,5<9,交换,变成7 9 5 4 2 1,5>4,不交换,4>2,不交换,2>1,不交换。最终结果7 9 5 4 2 1
。。。。。。
打字真的累,哈哈
最后一个for是为了将排好序的数字挨个打印出来。 最终结果是9 7 5 4 2 1

参考:

/* Note:Your choice is C IDE */
#include "stdio.h"

//冒泡排序
void choose(int a[10]){
    int i,j,temp;
    for(i=1;i<10;i++)
    {
        for(j=9;j>=i;j--)
        {
            if(a[j]<a[j-1]){
                temp=a[j];
                a[j]=a[j-1];
                a[j-1]=temp;
            }
        }    
    }    
}
//输出
void output(int a[10]){
    int i;
    for(i=0;i<10;i++)
        printf("%d\t",a[i]);    
}
void main()
{
    
    int b[20];
    int a[10];
    int i,cnt=0;
    for(i=0;i<20;i++){
        scanf("%d",&b[i]);
        if(i%2==0){
            a[cnt++]=b[i];
        }    
    }
    //冒泡排序
    choose(a);
    //输出
    output(a);
}

第九行j<6或者j<=6-1

第一个for循环是输入6个数的作用,
第二个for循环是循环需要的轮次,共需要5轮
第三个for循环时将6个数,进行相邻的两个数进行比较,大的排后面。如:4.3.2,6,1,循环完一轮变为3.2.4.1.6
第四个for循环是将排序好的数打印输出

1.这种循环一直理解不了怎么办呀?
很正常,不要慌,多练习,多思考,多总结,会理解的。
2.为什么要有两个变量?
两个变量指的是i和j吗?因为是两层不同的循环,外层i,内层j,两层循环嵌套比较常用于操作二维数组、还有数组元素排序,关于数组元素排序,比如这个冒泡,它涉及到数与数之间的交互,就是每个元素都要和其他的元素做比较,之后进行位置交换,进而实现排序。
3.为什么有这么多for语句?
因为排序实现的需求,需要循环输入,循环排序,循环输出
4.嵌套的作用是啥呀?
嵌套的作用,个人认为是可以更好地实现多元素关系

以上仅供参考,如有任何疑问,可以评论回复,看到即回。
希望对题主有所帮助!可以的话,点个采纳!

只能说明冒泡排序你没有理解啊,你去看看冒泡排序的具体说明