C语言的冒泡排序方法

img


1345679987654321等牛牛哥来解答!这个问题有点不懂呀。哈。


int main()

{
    int n,i,j;
    float temp;
    float a[100];    //用int只能输入整形
    scanf("%d",&n);
    for(i=0;i<n;i++)
        scanf("%f",&a[i]);
    for (i = 0; i< n-1; i++)  //比较n-1轮
    {
        for ( j = 0; j< n -1 - i; j++)  //每轮比较n-1-j次,
        {
            if (a[j]  > a[j+1]) //从小到大,把大的换到后面
            {
                temp = a[j];
                a[j] = a[j+1];
                a[j+1] = temp;
            }
        }
    }
    for(i=0;i<n;i++)
        printf("%.2f  ",a[i]);

}


#include<stdio.h>
int main()
{
    int n,i,j,temp;
    int a[100];
    scanf("%d",&n);
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);
    for (i = 0; i< n - 1; i++)  //比较n-1轮
    {
        for ( j = 0; j< n - 1 - i; j++)  //每轮比较n-1-j次,
        {
            if (a[j] < a[j+1]) //从大到小
            {
                temp = a[j];
                a[j] = a[j+1];
                a[j+1] = temp;
            }
        }
    }
    for(i=0;i<n;i++)
        printf("%d  ",a[i]);

}

供参考:

#include<stdio.h>
int main()
{
    int n, i, j;
    double a[101], tmp;
    scanf("%d", &n);
    for (i = 0; i < n; i++)
        scanf("%lf", &a[i]);
    for (i = n - 1; i > 0; i--)
    {
        for (j = 0; j < i; j++)  
        {
            if (a[j] > a[j + 1]) //从小到大
            {
                tmp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = tmp;
            }
        }
    }
    for (i = 0; i < n; i++)
        printf("%.4f ", a[i]);
    return 0;
}