思想: 从前往后两两比较相邻元素的值,若前一个大则交换。

代码:

/*冒泡排序*/#include<stdio.h>void BubbleSort(int a[], int n){int i,j,temp;int flag;for(i=0;i<n-1;i++){flag=0;                  //没发生交换的标志 for(j=0;j<n-1-i;j++){    //从最前面到n-1-i个是没排序的元素 if(a[j]>a[j+1]){     //如果前面的比后面的大则交换 temp=a[j+1];a[j+1]=a[j];a[j]=temp;flag=1;         //发生交换置1 }}if(flag==0){            //若本趟操作没有发生交换则整个序列已有序,直接结束循环 break;}}
}int main(void){int a[9]={56,24,98,77,13,36,43,65,81};BubbleSort(a,9);for(int i=0;i<9;i++){printf("%d ",a[i]);}return 0;
}

空间复杂度: 常数个辅助单元,O(1)
时间复杂度:
最好(有序):比较n-1次,交换0次,O(n)
最坏(完全逆序):比较(n-1)+(n-2)+…+1= n(n-1)/2次,交换n(n-1)/2次 O(n²)
总体来说O(n²)

稳定性: 只有当逆序时才会交换,相等不会交换,稳定

适用情况: 也适用于链表

遇到的问题:
1.若在一趟操作中没有发生交换,则整体已经有序,可以提前结束比较。
2.冒泡排序所产生的有序子序列一定是全局有序,每趟都会将一个元素放在它的最终位置上

冒泡排序C语言代码 时间复杂度相关推荐

  1. 冒泡排序 C语言代码

    冒泡排序是一种简单的排序算法,它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来.这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端. ...

  2. 数据结构—冒泡排序 C语言代码实现(从前向后/从后向前两种)

    冒泡排序的思想就是交换,假设要使序列排为递增 如果从左到右比较,则如果左边的比较大就交换, 如果从右向左比较,则右边的比较小就交换. //冒泡排序-从左到右交换 void Bubblesort(int ...

  3. 指针冒泡排序c语言代码,用指针编写冒泡排序方法

    满意答案 ha141988 2013.05.26 采纳率:44%    等级:13 已帮助:10095人 需要修改三个地方:(确保程序正常运行) 1.scanf("%d",*ptr ...

  4. C语言一趟冒泡交换最小值,C语言单链表冒泡排序为啥以下代码实现不了?

    struct node *sort(struct node *head)/*排序*/ { struct node *p,*q; struct node *temp; for(p=head;p!=NUL ...

  5. c语言选择冒泡排序,c语言选择冒泡排序讲解(附代码)

    c语言选择冒泡排序讲解(附代码) c语言选择冒泡排序讲解(附代码) 冒泡排序原理举例: 给定一组数 15 20 1 16 进行从大到小冒泡排序.第一次起泡的第一次比较:用15和20比较,若15比20小 ...

  6. c 语言从大到小排序算法,10 大经典排序算法(动图演示+ C 语言代码)

    原标题:10 大经典排序算法(动图演示+ C 语言代码) 来源:C语言与CPP编程 以前也零零碎碎发过一些排序算法,但排版都不太好,又重新整理一次,排序算法是数据结构的重要部分,系统地学习很有必要. ...

  7. 超详细八大排序+基数排序(图文并茂+动图演示+C语言代码演示)

    超详细八大排序+基数排序(图文并茂+动图演示+C语言代码演示) 插入排序-直接插入排序 插入排序-希尔排序 选择排序-直接选择排序 选择排序-堆排序 交换排序-冒泡排序 交换排序-快速排序-三种方法( ...

  8. 快速排序c语言实现,快速排序的C语言代码实现

    快速排序实质上是对"冒泡排序"的一种改进,整个排序过程可概括为:通过N趟的排序将原本的排序数据分为若干块进行分块排序,而在每趟排序过程中,以指定的关键字将待排数据分别分为比关键字大 ...

  9. 构建线性表的c语言代码,数据结构严蔚敏C语言版—线性表顺序存储结构(顺序表)C语言实现相关代码...

    1.运行环境 这里说明一下这里所有的C语言代码都是基于code::blocks 20.03编译运行的.当然一些其他集成开发环境应该也是可以的,个人不太喜欢功能太过强大的IDE,因为那同样意味着相关设置 ...

  10. 数据结构与算法|马踏棋盘算法(小甲鱼)C语言代码的算法分析

    马踏棋盘算法(骑士周游问题)的算法分析 C语言代码部分来自小甲鱼的<数据结构与算法> 文章目录 马踏棋盘算法(骑士周游问题)的算法分析 一.C语言代码实现 二.代码分析与算法思路 题目要求 ...

最新文章

  1. Django、Flask、Tornado的比较
  2. About The FTP
  3. C# 程序执行时间差
  4. 百度网盘迎来劲敌!非会员下载速度10MB/S……
  5. 【前端攻略】最全面的水平垂直居中方案与flexbox布局
  6. P4248 [AHOI2013]差异
  7. [vue-cli] 说下你了解的vue-cli原理?你可以自己实现个类vue-cli吗?
  8. 关于EFCore线程内唯一
  9. 闲话WPF之十八(WPF中的资源 [4] )
  10. 关于字符集的简单介绍
  11. linux mysql怎么建数据库用户,Linux MySQL新建用户
  12. Java线程安全策略
  13. OpenAI Gym 是一个优秀开发和比较强化学习算法的工具
  14. 一对多关联关系映射和设置级联属性
  15. Maya2014/2015/2016/2017/2018/2019安装包及安装教程
  16. Qtum量子链发布QIP-7:Qtum虚拟机升级,五大更新全面提升开发性能
  17. CYUSB3014类别
  18. 苹果ios系统企业级开发者授信下载app时出现:‘此app开发者需要更新’‘出现一朵云app无法打开’有的手机可以打开有的手机无法打开情况解决方案
  19. 弘辽科技:618年中大决战,拖词拖价法快速玩转淘宝直通车
  20. Android中的Cursor

热门文章

  1. OpenGL超级宝典(第7版)笔记12 前三章回顾 OpenGL扩展简介
  2. Java实用教程-Java基本语法-Java程序的构成
  3. 单片机课程设计:基于STM32智能交通灯的设计
  4. matlab做神经网络的步骤,matlab建立神经网络模型
  5. BP神经网络及其app设计
  6. 陈纪修老师《数学分析》 第06章:不定积分 笔记
  7. 系统镜像ISO写入U盘
  8. SQLSERVER 2008 R2下载安装教程
  9. NVIDIA:构建加速计算生态,推动深度学习应用落地
  10. Node.js下载及安装步骤