冒泡排序

一,排序以前的简单介绍,算法

1. 输入两个数,按代数值由小到大的顺序输出这两个数。数组

#include <stdio.h>
#include <stdlib.h>
int main()
{
    float a, b, t;
    scanf("%f %f", &a, &b);
    if(a > b)
    {
        t = a;
        a = b;
        b = t;
    }
    printf("%5.2f, %5.2f\n", a, b);
}

输入:5.444 1.222spa

输出:1.22 5.44指针

解析:设置一个中间变量来交换两个数的值。code

2. 输入3个数a,b,c;要求按由小到大的顺序输出。排序

#include <stdio.h>
#include <stdlib.h>
int main()
{
    float a, b, c, t;
    scanf("%f %f %f", &a, &b, &c);
    /* 实现 a 和 b 的交换*/
    if(a > b)
    {
        t = a;
        a = b;
        b = t;
    }
    /* 实现 a 和 c 的交换*/
    if(a > c)
    {
        t = b;
        b = c;
        c = t;
    }
    if(b > c)
    {
        t = b;
        b = c;
        c = t;
    }
    printf("%5.2f, %5.2f, %5.2f\n", a, b, c);
}

解析:3个数要交换3次,那么10个数两两交换要多少次,显然这种方法不合适了,input

这就是算法的重要性了,接下来讲说冒泡排序。io

2、冒泡排序class

算法要求:用起泡法对10个整数按升序排序。变量

算法分析:若是有n个数,则要进行n-1趟比较。在第1趟比较中要进行n-1次相邻元素的两两比较,在第j趟比较中要进行n-j次两两比较。比较的顺序从前日后,通过一趟比较后,将最值沉底(换到最后一个元素位置),最大值沉底为升序,最小值沉底为降序。

1. 用数组实现

#include <stdio.h>
#include <stdlib.h>
#define N 10
int main()
{
    int arr[N] = {0};
    int i=0, j=0,tmp=0;
    printf("Please input 10 numbers:\n");
    for(i=0;i<N;i++)
    {
        scanf("%d", &arr[i]);
    }
    for(j=0; j < N-1; j++)
    {
        for(i=0; i < N-1-j;i++)
        {
            if(arr[i] > arr[i+1])
            {
                tmp      = arr[i];
                arr[i]   = arr[i+1];
                arr[i+1] = tmp;
            }
        }
    }

    printf("the sorted numbers:\n");
    for(i=0;i<N;i++)
    {
        printf("%d ",arr[i]);
    }
    printf("\n");
    return 0;
}

2. 用指针实现

#include <stdio.h>
#include <stdlib.h>
#define N 10
int main()
{
    int arr[N] = {0};
    int i=0, j=0;
    int *p=NULL, *tmp=NULL;
    p = arr;
    printf("Please input 10 numbers:\n");
    for(i=0;i<N;i++)
    {
        scanf("%d", p+i);
    }

    for(j=0; j < N-1; j++)
    {
        for(i=0; i < N-1-j;i++)
        {
            if(*(p+i) > *(p+i+1))
            {
                tmp      = *(p+i);
                *(p+i)   = *(p+i+1);
                *(p+i+1) = tmp;
            }
        }
    }

    printf("the sorted numbers:\n");

    for(i=0;i<N;i++)
    {
        printf("%d ",*p++);
    }
    printf("\n");
    return 0;
}
相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息