C语言学习(二)

学习了冒泡法之后才逐渐发觉了C语言的难处,冒泡法在第一次接触时,极容易在逻辑上犯错,导致思维转不过来。

首先,在定义时,为了优化代码,采用了int len = sizeof(a)/sizeof(int)为下面代码所用的数字。由于int型固定为4字节,而主要根据数组a里的个数所确定len的数字。

下面是冒泡法的代码:

#include <stdio.h>

int main()
{
    int a[10]={3,5,2,234,4567,87,23,8,90,10};
    int x,y,temp;
    int len=sizeof(a) / sizeof(int);

    for(x = 0;x < len -1;x++)
    {
        for(y = 0;y < len-x-1;y++)
        {
            if(a[y] > a[y+1])
            {
                temp = a[y];
                a[y] = a[y+1];
                a[y+1] = temp;
            }
        }
    
        for(y = 0;y < len ;y++)
        {
            printf("%d ",a[y]);
        }
        printf("\n");
    }
    
    return 0;

}
其中,因为假如10个数字,则len为10,外循环为两个数比大小,最多只有9次,所以为len-1,而剩下的数循环的次数则是减去之前的数循环次数来定的,所以为len-x-1。

冒泡法的核心,就是中间的if判断语句,根据此语句,将大小不一的数字顺序排放。

猜你喜欢

转载自blog.csdn.net/Sucresmile/article/details/81192484