C语言 | 冒泡排序算法

1.算法思路

目的:将输入的数组按照从小到大冒泡排序。

思路:
① 从第1个数开始, 依次与后一个数比较,将最大的一个数放在最后;
② 继续从第1个数开始,依次与后一个比较,将最大的一个数倒数第二个;
③ 依次类推;

2. 算法实现

int bubble(int a[], int n)
{
    int temp;
    int i,j;

    for(i = 0; i< n-2;i++)
    {
        for(j = 0;j < n-1-i;j++)
        {
            if(a[j] > a[j+1])
            {
                temp = a[j+1];
                a[j+1] = a[j];
                a[j] = temp;
            }
        }
    }
    return 0;
}

3. 算法测试

/**
 * @brief   测试冒泡程序
 * @author  mculover666
 * @date    2020/04/09
*/

#include<stdio.h>

int bubble(int a[], int n);

int main()
{
    int i;
    int nums[10];

    for(i = 0;i < 10;i++)
    {
        nums[i] = i;
        printf("%2d ", nums[i]);
    }
    printf("\n");

    //排序功能
    bubble(nums, 10);

    //打印排序后的数
    for(i = 0;i < 10;i++)
    {
        nums[i] = 9-i;
        printf("%2d ", nums[i]);
    }
    printf("\n");

    return 0;
}

int bubble(int a[], int n)
{
    int temp;
    int i,j;

    for(i = 0; i< n-2;i++)
    {
        for(j = 0;j < n-1-i;j++)
        {
            if(a[j] > a[j+1])
            {
                temp = a[j+1];
                a[j+1] = a[j];
                a[j] = temp;
            }
        }
    }
    
    return 0;
}

编译:

gcc test.c -o test.o

执行结果:

发布了275 篇原创文章 · 获赞 757 · 访问量 34万+

猜你喜欢

转载自blog.csdn.net/Mculover666/article/details/105402054
今日推荐