一、冒泡排序:

  1、概念

  它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

  2、复杂度分析

  若文件的初始状态是正序的,一趟扫描即可完成排序。所需的关键字比较次数 和记录移动次数 均达到最小值   。

  所以,冒泡排序最好的时间复杂度为   

  若初始文件是反序的,需要进行 趟排序。每趟排序要进行  次关键字的比较(1≤i≤n-1),且每次比较都必须移动记录三次来达到交换记录位置。在这种情况下,比较和移动次数均达到最大值:

  所以,冒泡排序的最坏时间复杂度为 

综上,因此冒泡排序总的平均时间复杂度为 
  3、稳定性
  冒泡排序就是把小的元素往前调或者把大的元素往后调。所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法。
二、未完待续……

转载于:https://www.cnblogs.com/12344321hh/p/8690105.html

排序算法-- 大总结相关推荐

  1. 【算法入门漫画】:“排序算法” 大总结

    冒泡排序: 漫画:什么是冒泡排序? 选择排序: 漫画:什么是选择排序? 插入排序: 漫画:什么是插入排序? 此外还有冒泡排序的变种,鸡尾酒排序: 漫画:什么是鸡尾酒排序? 第三梯队的排序算法有什么共同 ...

  2. c++ 二维数组 排序_漫画:“排序算法” 大总结

    ​冒泡排序: 漫画:什么是冒泡排序?​mp.weixin.qq.com 选择排序: 漫画:什么是选择排序?​mp.weixin.qq.com 插入排序: 漫画:什么是插入排序?​mp.weixin.q ...

  3. 【java算法】排序算法大合集

    文章目录 排序分类/排序算法的分类 冒泡排序 选择排序 插入排序 希尔排序 交换法 移位法(效率高 快速排序 归并排序 基数排序 排序算法时间复杂度比较 相关术语补充 各个排序的区别总结 刷题 老子的 ...

  4. 七大排序算法大汇总(上)

    目录 一.[前言]排序的稳定性: 二.七大排序总览 三.插入排序 1.1直接插入排序 1.2直接插入排序优化版--折半插入排序: 2.希尔排序 四.选择排序 1.1选择排序 1.2进阶版选择排序 2. ...

  5. 排序算法大集锦_合并排序_1(分治思想)

    这一系列博客的特点就是--给出每趟排序的结果 本来想着好好写一下过程,弄个图片什么的,不过觉得网上的解析太多了,都比较好,所以这些博客就算是对自己的总结吧. #include <stdio.h& ...

  6. 排序算法的详解和分析对比(详细讲解)

    目录 前言 一.排序的概念 二.排序的分类 三.常见排序算法的原理以及思想 1. 直接插入排序 1.1 直接插入排序的思想 1.2 直接插入排序代码实现 1.3 直接插入排序的详细过程 1.4 直接插 ...

  7. 十大排序算法 导图总结

    以下为我们经常用到的十大典型排序算法导图,很多设计以及优化的思想值得去参考学习 因为代码较多,所以都添加到对应的实现注释中了,相关代码可以从Mind-mapping获取xmind源文件 参考文档: 基 ...

  8. C++实现十大排序算法(冒泡,选择,插入,归并,快速,堆,希尔,桶,计数,基数)排序算法时间复杂度、空间复杂度、稳定性比较(面试经验总结)

    排序算法分类 内部排序算法又分为基于比较的排序算法和不基于比较的排序算法,其分类如下: 比较排序:   直接插入排序    希尔排序 (插入)  冒泡排序     快速排序  (交换) 直接选择排序  ...

  9. java常用的7大排序算法汇总

    这段时间闲了下来,就抽了点时间总结了下java中常用的七大排序算法,希望以后可以回顾! 1.插入排序算法 插入排序的基本思想是在遍历数组的过程中,假设在序号 i 之前的元素即 [0..i-1] 都已经 ...

最新文章

  1. poj 2482 Stars in Your Window(线段树+离散化+线扫描)
  2. libevent中的基本数据结构
  3. java最长回文子序列_LeetCode[5] - 最长回文子串动态规划
  4. 某县百姓百事110便民服务管理系统(1)——项目总结
  5. [How TO]-git/gerrit配置方法
  6. android 4.x环境搭建
  7. mysql 分组 字符串_MySQL查询以字符串字段中的数字字符对行进行分组?
  8. mac安装python虚拟环境_详解Mac配置虚拟环境Virtualenv,安装Python科学计算包
  9. 启动Eclipse时发生An internal error occurred during: Initializing Java Tooling错误,详细提示如下:...
  10. STL之修改集合里边元素的顺序
  11. 分布式日志平台--ELKStack实践
  12. element引入的组件大小高度不对_ElementUI 在 按需引入时定义 default size?
  13. delphi启动ie调用本地html传参数_年轻人不讲武德啊!了解下浏览器如何解析html、css,js
  14. 偶极子天线的优缺点_一种双面印刷偶极子天线解析
  15. 计算机策略组无法打开怎么办,本地组策略打不开,怎么解决
  16. 我的硬件工程师成长之路
  17. 4G全网通MTK6737开发板-安卓核心板通信LTE模块方案
  18. 如何提高自己的编码水平
  19. js 类似发微博或者微信朋友圈的时间显示 刚刚 几天前
  20. 多校训练2 F Girlfriend 数论(球冠)

热门文章

  1. 1.1 Spring的整体架构--Spring源码深度解析
  2. Introduce Intelligence to Your Security Operations
  3. CentOS下设置服务自动启动的方法
  4. 【读书笔记】建造者模式代码完成与大家分享
  5. 如何看期权是实值还是虚值?
  6. hs300 quant
  7. spring boot 菜鸟教程学习:spring是一个超级大工厂能够管理java对象(bean)和他们之间的关系(依赖注入)
  8. 实验协作的时候需要做什么?
  9. powerbi add visual diagram
  10. !和?在formal method里面的意思