C语言实现冒泡排序

什么是冒泡排序?

冒泡排序是一种简单的排序算法,其基本思想是通过比较相邻的元素,并根据需要交换它们的位置,从而将最大(或最小)的元素逐渐"冒泡"到数组的一端。在每一轮遍历中,最大(或最小)的元素都会"冒泡"到数组的末尾,因此称为冒泡排序。

冒泡排序的步骤

1、从数组的第一个元素开始,依次比较相邻的两个元素。
2、如果第一个元素大于第二个元素,则交换它们的位置,使较大的元素排在后面。
3、继续比较下一对相邻元素,重复步骤2。
4、重复遍历数组,每次遍历将最大的元素"冒泡"到末尾。
5、重复步骤1~4,直到所有元素都按照顺序排列。

关键

冒泡排序的关键点是内外两层循环。外层循环控制遍历的次数,内层循环负责比较相邻元素并交换位置。经过一次完整的遍历,最大(或最小)的元素就会"冒泡"到末尾。重复进行多次遍历,直到所有元素都被排序。

示例代码

c 复制代码
#include <stdio.h>

void BubbleSort(int arr[], int length);

int main()
{
    int arr[5] = {5, 3, 8, 4, 2};
    /*
    不可以放在函数内部, 
    当数组作为函数参数传递给函数时,
	数组参数会被转换为指针类型,
	因此在函数内部无法通过sizeof操作符获取数组的长度。
	*/
    int length = sizeof(arr) / sizeof(arr[0]);
    BubbleSort(arr, length);
    return 0;
}

void BubbleSort(int arr[], int length)
{
    int i, j, k;
    for (i = 0; i < length; i++)
    {
        for (j = 0; j < length - 1 - i; j++)
        {
            if (arr[j + 1] < arr[j])
            {
                int temp = arr[j + 1];
                arr[j + 1] = arr[j];
                arr[j] = temp;
            }
        }
    }

    for (k = 0; k < length; k++)
    {
        printf("%d ", arr[k]);
    }
}
相关推荐
小羊羔heihei19 小时前
Python编程实战:12道趣味算法题
笔记·python·学习·其他·算法·学习方法·交友
三维重建-光栅投影19 小时前
PCL之RANSAC实践
算法
weixin_4577600020 小时前
深入解析 Beam Search:从原理到实践的高效解码算法
python·算法
ulimate_20 小时前
anygrasp算法:调研与使用
算法
愣头不青20 小时前
96.不同的二叉搜索树
数据结构·算法·leetcode
AI科技星21 小时前
光速螺旋量子几何统一场论——基于 v ≡ c 公理的四大基本力全维度求导证明与精准数值验证
c语言·开发语言·人工智能·算法·机器学习·平面
ab15151721 小时前
3.27完成3(指针)、13、41、44(指针)、50、51、95、96、97
算法
程序猿编码21 小时前
隐匿注入型ELF加壳器:原理、设计与实现深度解析(C/C++ 代码实现)
c语言·网络·c++·elf·代码注入
AI成长日志21 小时前
【强化学习专栏】深度强化学习技术演进:DQN、PPO、SAC的架构设计与训练优化
人工智能·算法·架构
郭逍遥21 小时前
[Godot] JPS跳点寻路和RVO避障
算法·godot·启发式算法