1.冒泡排序

1.概念及思路:重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故称为"冒泡排序"。
2.代码实现

#include<iostream>
using namespace std;
void BubbleSort(int *a, int size)
{for (int i = 0; i < size; i++)//外循环,循环每个元素{for (int j = 1; j < size - i; j++)//内循环进行元素的两两比较{if (a[j] < a[j - 1])//判断相邻元素并进行交换{int temp = a[j];a[j] = a[j - 1];a[j - 1] = temp;}}}
}
int main()
{int a[10] = { 2, 7, 34, 54, 12, 5, 19, 33, 88, 23 };cout << "原来的数组为:" << endl;for (int i = 0; i < 10; i++){cout << a[i] << " ";}cout << endl;BubbleSort(a, 10);cout << "冒泡排序后的数组为:" << endl;for (int i = 0; i < 10; i++){cout << a[i] << " ";}return 0;
}

运行结果为:

时间复杂度:外循环和内循环以及判断和交换元素的时间开销。
最优的情况也就是开始就已经排序好序了,那么就可以不用交换元素了,由于外层循环为n,内层所需要循环比较的次数为(n-1)、(n-2)…1由等差数列求和得时间花销为:[ n(n-1) ] / 2;所以最优的情况时间复杂度为:O( n^2 )。
最差的情况也就是开始的时候元素是逆序的,那么每一次排序都要交换两个元素,则时间花销为:[ 3n(n-1) ] / 2;(其中比上面最优的情况所花的时间就是在于交换元素的三个步骤);所以最差的情况下时间复杂度为:O( n^2 );
空间复杂度:冒泡排序的辅助变量空间仅仅是一个临时变量,并且不会随着排序规模的扩大而进行改变,所以空间复杂度为O(1)。

冒泡排序及其时间、空间复杂度解析相关推荐

  1. 选择排序,插入,快排,冒泡排序的时间空间复杂度详解

    时间复杂度 在算法的分析中,语句的执行次数T(n)是一个关于n(问题规模)的一个函数.分析n的变化引起T(n)的改变,进而得到T(n)的数量级,也就是时间频率.如果存在某一个辅助函数f(n),当n趋于 ...

  2. 四种排序:选择,插入,冒泡,快速排序原理及其对应的时间、空间复杂度解析

    四种排序:选择,插入,冒泡,快速排序原理及其对应的时间空间复杂度 首先,在了解四种排序之前,让我们来了解一下什么是时间复杂度和空间复杂度. 时间复杂度:算法的时间复杂度是一个函数,它定性描述该算法的运 ...

  3. 001+limou+时间空间复杂度

    0.数据结构的学习推荐书籍 (1)<小黑的漫画算法>简单看一下 (2)<大话数据结构> (3)<数据结构(C语言版)> 1.时间复杂度和空间复杂度 (1)时间复杂度 ...

  4. 简单排序算法时间空间复杂度分析及应用(4)-二分插入排序

    简单排序算法时间空间复杂度分析及应用(4)-二分插入排序 背景: 顾名思义,这个二分插入排序是直接插入排序的进化版,主要变化的地方就是在内循环部分,即外循环的循环节点在确定区域的位置查询方式由原来的直 ...

  5. 冒泡排序中时间与空间的复杂度

    关注+星标公众号,不错过精彩内容 来源 | CSDN 编排 | strongerHuang 软件排序算法中,冒泡排序是最经典的一个,很多大学教程也都是用它作为案例. 你知道冒泡排序的时间与空间复杂度吗 ...

  6. 算法设计与分析课程的时间空间复杂度

    算法设计与分析课程的时间空间复杂度: 总结 算法 时间复杂度 空间复杂度 说明 Hanoi $ O(2^n) $ $ O(n) $ 递归使用 会场安排问题 \(O(nlogn)\) \(O(n)\) ...

  7. 排序算法 之四 分类、时间/空间复杂度、如何选择

    写在前面   现在网上关于排序算法的文档不计其数,为什么要写这篇文章呢?主要是因为一些算法虽然在平时有用到,但是从来没有细细整理过,没有个统一.整体的认识.写这篇文章一来是进行一下总结,二来趁机再系统 ...

  8. java的时间变化_通过java记录数据持续变化时间代码解析

    这篇文章主要介绍了通过java记录数据持续变化时间代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.需求:获取count为null和不为n ...

  9. Algorithm Master Road:算法的时间/空间复杂度

    很多同学都觉得算法很难,难以入门,难以理解,更难以掌握和运用,其实归根溯源,我们可以把所有的问题都通过枚举法来解决,但是受困于「时间」和「空间」的因素,有的时候并不能枚举所有的情况,所以需要通过精妙的 ...

  10. (二) 时间/空间复杂度计算

    时间/空间复杂度计算 时间复杂度是什么? O(1) O(n) O(1)+O(n)=O(n) O(n)*O(n)=O(n^2) O(logN) 空间复杂度是什么? O(1) O(n) O(n^2) 思考 ...

最新文章

  1. C++longest common string最长公共字符串的实现(附完整源码)
  2. spring cloud构建互联网分布式微服务云平台-断路器聚合监控(Hystrix Turbine)
  3. Bootstrap-CSS-排版
  4. 【编撰】linux IPC 001 - 概述
  5. 快速理解孤儿进程和僵尸进程
  6. python爬房源信息_用python爬取链家网的二手房信息
  7. VS2010~2015番茄助手VA_X 2073 重新安装时遇到问题The security key for this program currently stored on your system
  8. paip.c3p0 数据库连接池 NullPointerException 的解决...
  9. iOS AVPlayer的那些坑
  10. saved_model_cli查看SavedModel
  11. Word插入脚注只占左下角一栏的方法
  12. 二级计算机合格,计算机二级考试合格的分数线
  13. IOS11.03越狱
  14. Ubuntu 10.04小企鹅输入法安装
  15. 【信源编码技术】实验1-浊音清音爆破音的时域及频域特性分析
  16. from PyQt6 import QtCore, QtGui, QtWidgets ImportError: DLL load failed while importing QtGui:
  17. 学习历程-----postgreSql
  18. 测试团队建设,个人小总结~
  19. python全国计算机等级考试_Python二级教程(全国计算机等级考试)
  20. 深入了解新朋友——面向对象

热门文章

  1. 增强型脉冲宽度调制模块(ePWM)图解
  2. 电脑技巧:原版Windows系统与Ghost系统的区别
  3. php日志分析,PHP SeasLog实现高性能日志记录
  4. 详谈HTTPS SSL/TLS协议原理
  5. Springboot+vue项目零食销售商城
  6. 如何更改C盘下面用户文件夹名字
  7. CNN/RNN在NLP领域的对比
  8. 3--表格table 个人简历
  9. 什么是域名?域名有哪些种类?
  10. java8高级应用与开发课件和贯穿案例(全)分享