【C语言】冒泡排序原理以及代码实现

简介: 冒泡排序解析

冒泡排序介绍

定义:冒泡排序(Bubble Sort)是一种最基础的交换排序。之所以叫做冒泡排序,因为每一个元素都可以像小气泡一样,根据自身大小一点一点向数组的一侧移动。

image.png

解释:图片中10个元素为什么进行9趟冒泡排序?

按照规律应该是10趟,但在完成9趟冒泡时,9位元素已经就位,因此第十个数就已经其他数原因也就位了。就好比有5个小朋友按顺序分五个凳子,前四个已经排好了,第五个就不需要再排就知道应该在哪里了。

代码如下:

#include <stdio.h>voidbubble_sort(intarr[],intsz)
{
inti=0;
//确定冒泡排序的趟数for (i=0; i<sz-1; i++)
    {
intj=0;
flag=1;
//对两个数比大小for (j=0; j<sz-1-i; j++)
        {
//调换前后数据if (arr[j] >arr[j+1])
            {
inttap=arr[j];
arr[j] =arr[j+1];
arr[j+1] =tap;
            }
        }
    }
}
intmain()
{
intarr[] = { 9,8,7,6,5,4,3,2,1,0};
inti=0;
intsz=sizeof(arr) /sizeof(arr[0]);
bubble_sort(arr,sz);//冒泡排列for (i=0;i<sz;i++)
    {
printf("%d ", arr[i]);//打印排列好的数组    }
return0;
}

修改版代码:

#include <stdio.h>voidbubble_sort(intarr[],intsz)
{
inti=0;
//确定冒泡排序的趟数intflag=0;
for (i=0; i<sz-1; i++)
    {
intj=0;
flag=1;
//对两个数比大小for (j=0; j<sz-1-i; j++)
        {
//调换前后数据if (arr[j] >arr[j+1])
            {
inttap=arr[j];
arr[j] =arr[j+1];
arr[j+1] =tap;
flag=0;//本躺需要排序            }
        }
if (flag==1)//检查本趟是否还需要再进行排列        {
break;
        }
    }
}
intmain()
{
intarr[] = { 9,1,2,3,4,5,6,7,8,};
inti=0;
intsz=sizeof(arr) /sizeof(arr[0]);
bubble_sort(arr,sz);//冒泡排列for (i=0;i<sz;i++)
    {
printf("%d ", arr[i]);//打印排列好的数组    }
return0;
}

进阶版解析:在冒泡排序中加入了一个if判断,若正在进行的这一趟冒牌排序已经有序,那么直接跳出第二个for循环可以节省内存。

目录
相关文章
|
2月前
|
存储 安全 数据管理
C语言之考勤模拟系统平台(千行代码)
C语言之考勤模拟系统平台(千行代码)
64 4
|
1月前
|
存储 算法 程序员
C 语言递归算法:以简洁代码驾驭复杂逻辑
C语言递归算法简介:通过简洁的代码实现复杂的逻辑处理,递归函数自我调用解决分层问题,高效而优雅。适用于树形结构遍历、数学计算等领域。
|
2月前
|
存储 安全 物联网
C语言物联网开发之设备安全与代码可靠性隐患
物联网设备的C语言代码安全与可靠性至关重要。一是防范代码安全漏洞,包括缓冲区溢出和代码注入风险,通过使用安全函数和严格输入验证来预防。二是提高代码跨平台兼容性,利用`stdint.h`定义统一的数据类型,并通过硬件接口抽象与适配减少平台间的差异,确保程序稳定运行。
|
2月前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
73 1
|
3月前
|
算法 搜索推荐 C语言
【C语言】冒泡排序+优化版
【C语言】冒泡排序+优化版
|
3月前
|
存储 搜索推荐 C语言
深入C语言指针,使代码更加灵活(二)
深入C语言指针,使代码更加灵活(二)
|
3月前
|
存储 程序员 编译器
深入C语言指针,使代码更加灵活(一)
深入C语言指针,使代码更加灵活(一)
|
3月前
|
C语言
深入C语言指针,使代码更加灵活(三)
深入C语言指针,使代码更加灵活(三)
深入C语言指针,使代码更加灵活(三)
|
3月前
|
自然语言处理 编译器 Linux
C语言中抽象的编译和链接原理
C语言中抽象的编译和链接原理
34 1
|
3月前
|
C语言
【c语言】qsort函数及泛型冒泡排序的模拟实现
本文介绍了C语言中的`qsort`函数及其背后的回调函数概念。`qsort`函数用于对任意类型的数据进行排序,其核心在于通过函数指针调用用户自定义的比较函数。文章还详细讲解了如何实现一个泛型冒泡排序,包括比较函数、交换函数和排序函数的编写,并展示了完整的代码示例。最后,通过实际运行验证了排序的正确性,展示了泛型编程的优势。
43 0