冒泡排序:是从最底层元素开始比较,(与其上的元素比较)
小于就往上再比,大于就交换,再用较小的往上比较,直到最高层,
第一次把最小的放到最上层,第二次把第二小的放到第二层,以次类推;

冒泡排序的原理:重复的遍历要排序的数组,每次遍历过程中从头至尾比较两个相邻的元素,若顺序错误则交换两个元素。

快速排序:是先找到一个轴值,比较时把所有比轴值小的放到轴值的左边,
比轴值大的放到右边,再在两边各自选取轴值再按前面排序,直到完成.

冒泡排序的基本思想:每次比较两个相邻的元素,如果它们的顺序错误就把他们交换过来

冒泡排序的原理:每一趟只能确定将一个数归位,如果有n个数进行排序,只需将n-1个数归位,也就是说要进行n-1趟操作,而每一趟都需要从第1位开始进行相邻两个数的比较

冒泡排序的核心部分是双重嵌套循环,冒泡排序的时间复杂度是O(N2),这个一个非常高的时间复杂度

快速排序(不稳定) 

  原理:首先从原始数组中找到最小的元素,并把该元素放在数组的最前面,然后再从剩下的元素中寻找最小的元素,放在之前最小元素的后面,直到排序完毕

  时间复杂度:

        最好情况是(n)

        最差情况是(n*n)

快速排序是基于二分的思想,对冒泡排序的一种改进

快速排序基本思想:

通过一趟排序将要排序的数据分割成独立的两部分:分割点左边都是比它小的数,右边都是比它大的数。然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

快速排序原理:第一步:设置两个指针left和right分别指向数组的头部和尾部,并且以头部的元素

.选择排序

选择排序(Select Sort) 是直观的排序,通过确定一个 Key 最大或最小值,再从带排序的的数中找出最大或最小的交换到对应位置。再选择次之。双重循环时间复杂度为 O(n^2)

冒泡排序和快速排序的区别相关推荐

  1. 冒泡排序、快速排序的区别与联系

        在数据结构中,冒泡排序和快速排序,都属于交换排序,即两两比较待排序的关键字,交换不满足次序的那些偶对,直到整个序列满足从小到大或从大到小的次序为止.其时间复杂度.空间复制度.稳定性的对比如下: ...

  2. 计算机软件技术冒泡排序,北航计算机软件技术基础实验报告计软实验报告3——冒泡排序和快速排序...

    北航计算机软件技术基础实验报告计软实验报告3--冒泡排序和快速排序 (8页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 实验报告实验名称 ...

  3. java 冒泡排序和快速排序 实现

    面试的时候经常会遇到面试官让你直接手写排序算法,下面是冒泡排序和快速排序的实现. 冒泡排序 基本流程就是,自下而上比较相邻的两个元素进行比较,让大的元素往下面沉,较小的往上冒.按照排序规则进行比较,如 ...

  4. 数据结构和算法系列5 七大排序之冒泡排序和快速排序

    排序是我们生活中经常会面对的问题.同学们做操时会按照从矮到高排列:老师查看上课出勤情况时,会按学生学号顺序点名:高考录取时,会按成绩总分降序依次录取等.排序是数据处理中经常使用的一种重要的运算,它在我 ...

  5. 牛客网Java刷题知识点之插入排序(直接插入排序和希尔排序)、选择排序(直接选择排序和堆排序)、冒泡排序、快速排序、归并排序和基数排序(博主推荐)...

    不多说,直接上干货! 插入排序包括直接插入排序.希尔排序. 1.直接插入排序: 如何写成代码: 首先设定插入次数,即循环次数,for(int i=1;i<length;i++),1个数的那次不用 ...

  6. 排序算法之交换排序(冒泡排序、快速排序)

    交换排序(冒泡排序.快速排序) 交换排序 冒泡排序 概念 算法实现 快速排序 概念 算法实现 后续 交换排序 所谓交换,是指根据序列中两个关键字的比较结果来对换这两个记录在排序中的位置. 冒泡排序 概 ...

  7. 数据结构—排序算法总结(插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序、合并排序、计数排序)

    *排序 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作. 稳定性 在待排序的数组中,如果出现多个相同的关键字,例如:98751555512,中出现重复的数字,在 ...

  8. 冒泡排序代码_凡人能看懂的冒泡排序和快速排序(附动态图和代码详解))

    这是第一篇公众号文章,所以内容打算写的浅简一点. 这篇文章将主要介绍两种非常普遍的排序方式:冒泡排序和快速排序.内容包括两种排序的原理,代码剖析,以及时间复杂度分析. 因为注意到很多快排的文章在介绍完 ...

  9. (面试必知)必知必会的冒泡排序和快速排序

    前一篇给大家介绍了<优化的直接插入排序(二分查找插入排序,希尔排序)>,现在继续介绍其他排序算法 本博文介绍两个最常被提起的排序算法:冒泡排序和快速排序.冒泡排序是入门排序算法,思路比较常 ...

  10. 常用排序:冒泡排序与快速排序详解,看完这篇就够了!风马博客

    常用排序:冒泡排序与快速排序详解. 在排序算法中,冒泡排序和快速排序可以算是排序算法入门必会的两种排序了,今天和大家来分析一下如何快速理解并掌握这两种排序.首先冒泡排序是初学者最常用的排序,所以我们先 ...

最新文章

  1. 5.1.6 假脱机技术
  2. SpringBoot对于标注@ResponseBody注解返回JSON数据的处理
  3. 自由群,外代数和泛包络代数
  4. 网路知识:为什么宽带越用越慢,看完你就明白了
  5. JavaFX技巧31:遮罩/剪切/ Alpha通道
  6. 吴恩达 神经网络和深度学习 第一课 第三周 (代码)planar data classify
  7. ubuntu16.04 安装python3.6
  8. python-视频抽帧、数据集命名
  9. maplesoft maple 2021 安装教程
  10. Java8 实战系列-06-lambda 方法引用
  11. 《21天学通Java(第6版)》—— 1.6 总结
  12. cd linux安装驱动程序,给CDlinux增添网卡驱动失败的原因和对策
  13. 伯努利公式怎么推导的
  14. vue后台管理框架(三)——登录功能
  15. 如何将已购kindle电子书转换成pdf格式阅读
  16. QUASI-HYPERBOLIC (拟双曲线) MOMENTUM AND ADAM FOR DEEP LEARNING——精读
  17. lync服务器不响应或无法联系,Lync 2013 已知问题
  18. JavaScript:将输入的一串数字转换成中文大写,最高可写12位(千亿)
  19. 华为OD机试 - 开心消消乐
  20. 基于Asterisk的VoIP开发指南——(1)实现基本呼叫功能

热门文章

  1. 元素可视区client系列(附实例)
  2. SwipeRefreshLayout+RecyclerView滑动冲突解决
  3. Day 45 Ansible批量管理
  4. 平安夜,Python 送你一顶圣诞帽 @微信官方
  5. 谭晓生:如何面对IoT时代的安全新挑战?
  6. Java 文件读写示例1
  7. JVM调优总结-调优方法
  8. 链栈的基本操作和实现
  9. python处理pdf的第三方库_Python使用到第三方库PyMuPDF图片与pdf相互转换
  10. 【学习笔记】生成下一个排列(STL库函数next——permutation)