广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言实现冒泡排序算法代码怎么写
  • 906
分享到

C语言实现冒泡排序算法代码怎么写

2023-06-29 19:06:04 906人浏览 薄情痞子
摘要

这篇文章主要介绍“C语言实现冒泡排序算法代码怎么写”,在日常操作中,相信很多人在C语言实现冒泡排序算法代码怎么写问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言实现冒泡排序算法代码怎么写”的疑惑有所帮助!

这篇文章主要介绍“C语言实现冒泡排序算法代码怎么写”,在日常操作中,相信很多人在C语言实现冒泡排序算法代码怎么写问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言实现冒泡排序算法代码怎么写”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

    1. 问题描述

    对N个整数(数据由键盘输入)进行升序排列。

    2. 问题分析

    对于N个数因其类型相同,我们可利用 数组 进行存储。

    冒泡排序是在 两个相邻元素之间进行比较交换的过程将一个无序表变成有序表。

    冒泡排序的思想:首先,从表头开始往后扫描数组,在扫描过程中逐对比较相邻两个元素的大小。

    若相邻两个元素中,前面的元素大于后面的元素,则将它们互换,称之为消去了一个逆序。

    在扫描过程中,不断地将两相邻元素中的大者往后移动,最后就将数组中的最大者换到了表的最后,这正是数组中最大元素应有的位置。

    然后,在剩下的数组元素中(n-1个元素),重复上面的过程,将次小元素放到倒数第 2 个位置。

    不断重复上述过程,直到剩下的数组元素为 0 为止,此时的数组就变为了有序。

    假设数组元素的个数为 n nn,在最坏情况下需要的比较总次数为:((n−1)+(n−2)+...+2+1)=n(n−1)/2。

    3. 算法设计

    冒泡排序的过程我们用示意图简单的表示,从整个排序过程中寻找规律,n个元素只需比较n−1次即可。

    假设一个数组中有 7 个元素,现在对这 7 个元素进行排序,只需比较 6 轮即可得到所要的有序序列。

    示意图中最后加粗的数字即为经过一轮交换位置固定的数字。示意图如下:

    C语言实现冒泡排序算法代码怎么写

    动图演示

    清楚了冒泡排序的过程,我们再来看一个动态图

    C语言实现冒泡排序算法代码怎么写

    4. 程序设计

    设计一

    数组名用 a 表示、数组下标用 j 表示,数组中相邻两个元素的下标可表示为 a[j]、a[j+1] 或 a[j-1]、a[j]。

    在利用数组解决问题时需要注意数组下标不要越界。

    假如定义一个整形数组 int a[n],则数组元素下标的取值范围是0~(n−1),下标小于0或者大于n−1 都视为下标越界。

    如果相邻元素采用 a[j]、a[j+1] 表示的话,则下标取值范围是0~(n−2);

    若采用 a[j-1]、a[j] 表示,下标取值范围则是1~(n−1)

    设计二

    数组元素互换 也是经常遇到的一类题型,一般这种情况我们需要 借助一个中间变量 才可以完成,对于许多初学者来说经常犯的一个错误是:对两个元素直接相互赋值,而不借助中间变量。

    我们先来看生活中的一个例子:

    在蓝墨水瓶中装有蓝墨水,红墨水瓶中装有红墨水;现在我们要把蓝墨水放到红墨水瓶中,红墨水放到蓝墨水瓶中。

    做法是先找一个白色空瓶(作用相当于程序中的中间变量):

    首先将蓝墨水倒入白色空瓶: t=a[i] 或 t=a[i+1];

    接着将红墨水倒入蓝墨水瓶:a[i]=a[i+1] 或 a[i+1]=a[i];

    最后将白瓶中的蓝墨水倒入红墨水瓶:a[i+1]=t 或 a[i]=t;

    经过这 3 步就完成了红墨水与蓝墨水的互换。如果不借助白色空瓶,直接把蓝墨水倒入红墨水瓶,或把红墨水倒入蓝墨水瓶,这样必将破坏原来所存储的内容。

    C语言实现冒泡排序算法代码怎么写

    第一轮的交换过程可以用简单的程序段进行表示:

    C语言实现冒泡排序算法代码怎么写

    第二轮交换过程(最后一个元素经过第一轮比较已经确定,不需要再次进行比较):

    C语言实现冒泡排序算法代码怎么写

    第三轮交换过程(最后两个元素已经确定,不需要再次进行比较):

    C语言实现冒泡排序算法代码怎么写

    结论

    由上面的程序段发现,第一轮比较的判定条件为 j < n-1;

    第二轮为 j < n-2;

    第三轮为 j < n-3;

    依次类推,第 i 轮的循环判定条件必为 j < n-i。

    编程过程中我们可以用两层循环来控制,第一层循环控制交换的轮数,第二层循环控制每轮需要交换的次数。

    5. 流程框架

    C语言实现冒泡排序算法代码怎么写

    6. 代码实现

    假设有下面一组无序数组,我们要对它进行升序排序

    C语言实现冒泡排序算法代码怎么写

    完整代码

    #include <stdio.h>//冒泡排序函数void BubbleSort(int arr[], int len){int i;int j;int temp;for (i = 0; i < len - 1; i++) //控制比较的轮数{for (j = 0; j < len - 1 - i; j++) //控制每轮比较的次数{if (arr[j] > arr[j + 1]) //数组相邻两个元素进行交换{temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}}//输出函数void print(int arr[], int len){int i;for (i = 0; i < len; i++){printf("%3D ", arr[i]);}}int main(){int arr[10] = { 5,8,6,3,9,2,1,7,12,4 };BubbleSort(arr, 10);printf("The data after sorted:\n");print(arr, 10);printf("\n");return 0;}

    运行结果

    C语言实现冒泡排序算法代码怎么写

    代码贴图

    C语言实现冒泡排序算法代码怎么写

    7. 问题拓展

    常用的排序方法除了上述的冒泡排序外,还有选择排序、插入排序、快速排序和堆排序等,下面简单介绍一下 选择排序。

    选择排序思想:

    扫描整个线性表,第一轮比较拿数组中的第一个元素与其他元素进行比较,遇到比第一个元素小的则进行交换;

    再拿着交换之后的第一个元素接着上次比较的位置与后面的元素进行比较,直到扫描到线性表的最后,从中选出最小的元素,将它交换到表的最前面(这是它应有的位置)。

    第二轮比较的时候从第二个元素开始,依次与第三个、第四个直到最后一个比较,在比较过程中有比第二个元素小的进行交换,接着与后面的元素比较;

    对剩下的子表采用同样的方法,直到子表为空。在最坏情况下需要比较n(n&minus;1)/2 次。

    选择排序如下

    #include <stdio.h>//选择排序void selectSort(int arr[], int len){int i;int j;for (i = 0; i < len - 1; i++){int min = i;//假设第一个元素是最小的for (j = i + 1; j < len; j++){if (arr[j] < arr[min]){min = j;//保存最小元素的下标}}//交换int temp = arr[min];arr[min] = arr[i];arr[i] = temp;}}//输出void print(int arr[], int len){for (int i = 0; i < len; i++){printf("%3d ", arr[i]);}}int main(){int arr[10] = { 5,8,6,3,9,2,1,7,12,4 };selectSort(arr, 10);printf("The data after sorted:\n");print(arr, 10);printf("\n");return 0;}

    运行结果

    C语言实现冒泡排序算法代码怎么写

    代码贴图

    C语言实现冒泡排序算法代码怎么写

    不同排序法的效率是不同的,不同需求情况下可选择不同的方法。

    到此,关于“C语言实现冒泡排序算法代码怎么写”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

    --结束END--

    本文标题: C语言实现冒泡排序算法代码怎么写

    本文链接: https://www.lsjlt.com/news/326245.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • C语言实现冒泡排序算法代码怎么写
      这篇文章主要介绍“C语言实现冒泡排序算法代码怎么写”,在日常操作中,相信很多人在C语言实现冒泡排序算法代码怎么写问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言实现冒泡排序算法代码怎么写”的疑惑有所帮助!...
      99+
      2023-06-29
    • C语言冒泡排序算法代码详解
      今天我们来用C语言实现一下冒泡排序 首先我们来了解一下什么叫做冒泡排序,冒泡顾名思义把质量轻的气体(如二氧化碳一样)浮到水面上(如可乐中的二氧化碳),因此冒泡排序的原理就是N个元素在...
      99+
      2022-11-13
    • c语言冒泡排序怎么实现
      C语言冒泡排序的实现步骤如下:1. 定义一个数组来存储待排序的元素。2. 使用两层循环来比较相邻两个元素的大小,并进行交换。3. 外...
      99+
      2023-08-25
      c语言
    • C语言实现交换排序算法(冒泡,快速排序)的示例代码
      目录前言一、冒泡排序1.基本思想2.优化3.扩展二、快速排序1.基本思想2.优化3.代码前言 查找和排序是数据结构与算法中不可或缺的一环,是前辈们在算法道路上留下的重要且方便的一些技...
      99+
      2022-11-13
    • C语言中冒泡排序算法详解
      目录一、算法描述二、算法分析三、完整代码总结一、算法描述 比较相邻两个元素,如果第一个比第二个大则交换两个值。遍历所有的元素,每一次都会将未排序序列中最大的元素放在后面。假设数组有 ...
      99+
      2022-11-12
    • C语言实现冒泡排序算法的示例详解
      目录1. 问题描述2. 问题分析3. 算法设计动图演示4. 程序设计设计一设计二结论5. 流程框架6. 代码实现7. 问题拓展1. 问题描述 对N个整数(数据由键盘输入)进行升序排列...
      99+
      2022-11-13
    • 【C语言】用冒泡排序实现my_qsort
      大家好,我是苏貝,本篇博客带大家了解如何用冒泡排序实现my_qsort,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️ 目录 一. 前言二. 冒泡排序三. ...
      99+
      2023-10-07
      c语言 排序算法 开发语言
    • C语言详解冒泡排序实现
      目录前言一、冒泡排序是什么二、具体步骤1.代码解释2.读入数据总结前言 在排序中,有各种各样的排序方式,今天我们将要来介绍《冒泡排序》。今天会从冒泡排序的具体意义和他的操作来展开。 ...
      99+
      2022-11-13
    • 基于Go语言实现冒泡排序算法
      目录冒泡排序图片演示普通的冒泡排序算法优化算法小结冒泡排序 冒泡排序是交换排序中最简单的一种算法。 算法思路: 遍历数组,相邻的两个元素进行比较,以升序为例,如果前面的元素大于后面的...
      99+
      2022-12-08
      Go语言实现冒泡排序算法 Go语言冒泡排序 Go 冒泡排序
    • Java实现冒泡排序的代码怎么写
      今天小编给大家分享一下Java实现冒泡排序的代码怎么写的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。冒泡排序原理比较相邻的两...
      99+
      2023-06-29
    • Java冒泡排序代码怎么写
      本篇内容介绍了“Java冒泡排序代码怎么写”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!冒泡排序是计算机的一种排序方法,它的时间复杂度为O(...
      99+
      2023-06-17
    • C#怎么实现冒泡排序和插入排序算法
      这篇文章主要讲解了“C#怎么实现冒泡排序和插入排序算法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#怎么实现冒泡排序和插入排序算法”吧!1.选择排序(冒泡排序)升序用第一个元素跟其他元素...
      99+
      2023-06-30
    • c语言冒泡排序和选择排序的使用代码
      目录1.冒泡排序2.选择排序区别总结1.冒泡排序 冒泡排序将一个列表中的两个元素进行比较,并将最小的元素交换到顶部。两个元素中较小的会冒到顶部,而较大的会沉到底部,该过程将被重复执行...
      99+
      2022-11-13
    • C#实现冒泡排序和插入排序算法
      1.选择排序(冒泡排序) 升序 用第一个元素跟其他元素比较,如果该元素比其他元素,则交换,保证该元素是最小的。然后再用第二个元素跟后面其他的比较,保证第二个元素是除第一个最小的。依次...
      99+
      2022-11-13
    • Java冒泡排序代码怎么实现
      这篇文章主要介绍了Java冒泡排序代码怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java冒泡排序代码怎么实现文章都会有所收获,下面我们一起来看看吧。冒泡排序冒泡排序 (Bubble Sort) 是一...
      99+
      2023-06-29
    • php怎么实现冒泡排序算法
      本文操作环境:windows10系统、php 7、thinkpad t480电脑。在给出具体的实现代码之前,我们先来简单介绍下冒泡排序。冒泡排序是一种比较简单的排序算法,它重复地走访过要排序的元素列,一次比较两个相邻的元素,如果他们的顺序(...
      99+
      2017-10-26
      php 冒泡排序
    • Python冒泡排序算法怎么实现
      今天小编给大家分享一下Python冒泡排序算法怎么实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1. 算法描述冒泡排序(...
      99+
      2023-07-02
    • C语言常见排序算法之交换排序(冒泡排序,快速排序)
      目录前言1.交换排序——冒泡排序1.1 算法思想1.2 动图演示1.3 冒泡最好的情况 2. 交换排序——快速排序...
      99+
      2022-11-13
    • C语言冒泡排序超全面实现流程
      目录普通版冒泡排序qosrt函数终极版冒泡排序终极版冒泡排序整体测试代码普通版冒泡排序 冒泡排序想必大家都很了解了吧,冒泡排序的算法思想就是两两比大小,一轮一轮比,每比完一轮排出一个...
      99+
      2023-01-13
      C语言冒泡排序原理 C语言冒泡排序算法
    • C语言实现各种排序算法实例代码(选择,冒泡,插入,归并,希尔,快排,堆排序,计数)
      目录前言 选择排序 冒泡排序 插入排序 归并排序 希尔排序 快速排序 堆排序 计数排序 总结前言 平时用惯了高级语言高级工具高级算法,难免对一些基础算法感到生疏。但最基础的排序算法...
      99+
      2022-11-12
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作