排序算法-冒泡排序(C语言实现)

简介

冒泡排序是一种简单但效率较低的排序算法。它重复地扫描待排序元素列表,比较相邻的两个元素,并将顺序错误的元素交换位置,直到整个列表排序完成。

实现

  • 以下内容为本人原创,经过自己整理得出,有问题欢迎评论区留言,引用请标明出处,谢谢!

/**
 * @author bhlu
 * @date 2023-08-16
 * 
 * @brief 冒泡排序
 * 
 * @param[in] data 数字数组
 * @param[in] size 数组长度
 * 
 * @return 无
*/
void bubble_sort(int data[], int size)
{
    // 按照上图的方法,遍历size-1次
    for(int i = 0; i < size - 1; i++)
    {
        // 标记: 用于判断这次遍历是否了数据,0->修改,1->未修改
        int flag = 1;
        // 每轮判断的次数,按上图的方法,第一轮是size-1,然后每次都会少一次,可以使用size-1-i
        for(int j = 0; j < size - 1 - i; j++)
        {
            // 将索引指向的数据与索引下一个数据进行比较,大于就换位置
            if(data[j] > data[j+1])
            {
                int swap = data[j];
                data[j] = data[j+1];
                data[j+1] = swap;
                flag = 0;  // 改变标记
            }
        }

        if(flag)
            // 如果还是1,说明已经排好了,就break
            break;
    }
}

完整代码

  • sort.c
#include "sort.h"

/**
 * @author bhlu
 * @date 2023-08-16
 * 
 * @brief 冒泡排序
 * 
 * @param[in] data 数字数组
 * @param[in] size 数组长度
 * 
 * @return 无
*/
void bubble_sort(int data[], int size)
{
    // 按照上图的方法,遍历size-1次
    for(int i = 0; i < size - 1; i++)
    {
        // 标记: 用于判断这次遍历是否了数据,0->修改,1->未修改
        int flag = 1;
        // 每轮判断的次数,按上图的方法,第一轮是size-1,然后每次都会少一次,可以使用size-1-i
        for(int j = 0; j < size - 1 - i; j++)
        {
            // 将索引指向的数据与索引下一个数据进行比较,大于就换位置
            if(data[j] > data[j+1])
            {
                int swap = data[j];
                data[j] = data[j+1];
                data[j+1] = swap;
                flag = 0;  // 改变标记
            }
        }

        if(flag)
            // 如果还是1,说明已经排好了,就break
            break;
    }
}
  • sort.h
#ifndef __SORT_H
#define __SORT_H

#include 

extern void bubble_sort(int data[], int size);

#endif
  • main.c
#include "sort.h"

int main(void)
{
    int data[] = {10, 5, 2, 3, 4, 7, 6};
    int size = sizeof(data) / sizeof(data[0]);
    printf("排序前: ");
    for (int i = 0; i < size; i++)
        printf("%d ", data[i]);
    printf("\n");

    bubble_sort(data, size);
    printf("排序后: ");
    for (int i = 0; i < size; i++)
        printf("%d ", data[i]);
    printf("\n");
    return 0;
}

你可能感兴趣的:(C语言初阶学习,排序算法,排序算法,c语言,算法)