最近去公司面试,新浪、360等第一道面试题都是书写冒泡排序,必知必会,必须做到倒背如流,随手能写。

冒泡排序算法的原理如下:

  • 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
  • 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
  • 针对所有的元素重复以上的步骤,除了最后一个。
  • 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

使用PHP实现代码如下:

function mp_sort($arr)
{if (!is_array($arr)) {return false;}$len=count($arr);for ($j=0; $j < $len-1; $j++) { for ($i=0; $i < $len-1; $i++) { if ($arr[$i]>$arr[$i+1]) {$m=$arr[$i];$arr[$i]=$arr[$i+1];$arr[$i+1]=$m;}}}return $arr;
}$arr=array(2,4,6,1,3,7);
print_r(mp_sort($arr));
结果输出:Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 6 [5] => 7 )

时间复杂度

  • 最好:O(n)
  • 最坏:O(n²)
  • 平均:O(n²)

空间复杂度:O(1)

冒泡排序是一种稳定的排序算法

注:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,则称这种排序算法是稳定的;否则称为不稳定的。

必会算法--冒泡排序相关推荐

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

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

  2. 程序员求职面试必会算法!会不断更新

    写在前面: 我是「扬帆向海」,这个昵称来源于我的名字以及女朋友的名字.我热爱技术.热爱开源.热爱编程.技术是开源的.知识是共享的. 这博客是对自己学习的一点点总结及记录,如果您对 Java.算法 感兴 ...

  3. 冒泡排序出现的问题_停课不停学 | 有趣的算法——冒泡排序

    停课不停学 有趣的算法--冒泡排序 01 生活中处处都有算法 每个人每天都会用到一些算法,算法也是人类使用计算机解决问题的技巧之一,但是算法并不是仅仅用于计算机领域中,包括在数学.物理甚至是每天的生活 ...

  4. C语言基础排序算法-冒泡排序

    C语言基础排序算法-冒泡排序 什么是冒泡排序? 顾名思义,这种排序方法就像水中的气泡一样,从底逐渐往上冒,一次前进一步.我们来看一个例子,看看到底是怎么冒泡的.假设有一个数组3,2,5,4,1,我们希 ...

  5. 经典排序算法 - 冒泡排序Bubble sort

    经典排序算法 - 冒泡排序Bubble sort 其原理是比较接近的数字22,按照从小到交换大或降序排列, 这样一趟过去后,最大或最小的数字被交换到了最后一位, 然后再从头開始进行两两比較交换,直到倒 ...

  6. JS数据结构与算法——冒泡排序(把大的数字依次往后放)

    一.图解排序过程 注意:比较次数和交换次数之所以不一致,是因为:比较了并不一定就需要交换两个数字的位置,比如比较 1 和 2两个数字,由于 后者本身就比前者大,所以不需要交换两者的位置. 二.代码实现 ...

  7. 排序算法-冒泡排序算法

    2019独角兽企业重金招聘Python工程师标准>>> 冒泡排序算法是所有排序算法中最简单.最基础的一种.冒泡排序算法的思路就是交换排序,通过相邻数据的交换来达到排序的目的. 冒泡排 ...

  8. 排序算法——冒泡排序(Bubble Sort)

    排序算法--冒泡排序(Bubble Sort) 算法简介(Introduction) Bubble sort is to compare adjacent elements of the list a ...

  9. C语言/Python经典算法冒泡排序

    C语言经典算法冒泡排序 #include "stdio.h" int main(){int a[10]={1,3,2,5,9,7,6,8,4,0};for (int i = 0; ...

最新文章

  1. getOutputStream() 的问题
  2. 地铁里运用计算机视觉的场景,人工智能技术在地铁运营场景应用研究报告(26页)...
  3. Snmp扫描-snmpwalk、snmpcheck
  4. asp:DropDownList用法
  5. git 修改commit_Git从8到13 深入了解Git特性
  6. 1.vue简介以及模板语法---vue教程
  7. python大鱼吃小鱼程序代码_最近跟导师学Python,熬夜弄了两个晚上写出来个大鱼吃小鱼游戏!...
  8. php漏洞黑掉数据库,WDCPnbsp;add_user.php任意数据库添加任意用户漏洞分析
  9. perl亲身试验ini---使用perl读写配置文件
  10. Python入门--__init__,__new__
  11. android 毫秒值转换时分秒],毫秒数转换成天时分秒、时分秒
  12. html5客户端页面,iphoneX 适配客户端H5页面的方法教程
  13. 基于图的广度优先搜索策略(耿7.11)
  14. Listener method could not be invoked with the incoming messageEndpoint handler details:Method
  15. shopex mysql 数据库服务器_win2003以isapi的方式配置php+mysql环境(安装了shopEX) 毕竟我是杨小飞i...
  16. Java 提供给第三方使用接口方法
  17. php-4.3+mysql-3.23+apache-2.0+vbb-2.32论坛的架设方法
  18. 《物联网 - 机智云开发笔记》第2章 设备驱动开发
  19. html制作宣传页面
  20. 字节跳动1/3员工不支持取消大小周工作制, 员工:每年少赚10万块!

热门文章

  1. apache wordpress php 外贸独立站
  2. Several ports (8080, 8009) required by Tomcat v7.0 Server at localhost are already in use. The serve
  3. Oracle Goldengate ERROR OGG 00446 解决方法
  4. HUAWEI HG659 lib 任意文件读取漏洞
  5. 中望3D 2021 “拔模”命令使用曲面做中性面
  6. vue-cli hot-module-replacement不生效,不自动更新。
  7. ASP.NET---FileMaker组件功能简介
  8. 逆向获取博客园APP代码
  9. spring和jump区别_jump和leap有什么区别?
  10. C++如何输出带双引号的语句