必会算法--冒泡排序
最近去公司面试,新浪、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)
冒泡排序是一种稳定的排序算法
注:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,则称这种排序算法是稳定的;否则称为不稳定的。
必会算法--冒泡排序相关推荐
- (面试必知)必知必会的冒泡排序和快速排序
前一篇给大家介绍了<优化的直接插入排序(二分查找插入排序,希尔排序)>,现在继续介绍其他排序算法 本博文介绍两个最常被提起的排序算法:冒泡排序和快速排序.冒泡排序是入门排序算法,思路比较常 ...
- 程序员求职面试必会算法!会不断更新
写在前面: 我是「扬帆向海」,这个昵称来源于我的名字以及女朋友的名字.我热爱技术.热爱开源.热爱编程.技术是开源的.知识是共享的. 这博客是对自己学习的一点点总结及记录,如果您对 Java.算法 感兴 ...
- 冒泡排序出现的问题_停课不停学 | 有趣的算法——冒泡排序
停课不停学 有趣的算法--冒泡排序 01 生活中处处都有算法 每个人每天都会用到一些算法,算法也是人类使用计算机解决问题的技巧之一,但是算法并不是仅仅用于计算机领域中,包括在数学.物理甚至是每天的生活 ...
- C语言基础排序算法-冒泡排序
C语言基础排序算法-冒泡排序 什么是冒泡排序? 顾名思义,这种排序方法就像水中的气泡一样,从底逐渐往上冒,一次前进一步.我们来看一个例子,看看到底是怎么冒泡的.假设有一个数组3,2,5,4,1,我们希 ...
- 经典排序算法 - 冒泡排序Bubble sort
经典排序算法 - 冒泡排序Bubble sort 其原理是比较接近的数字22,按照从小到交换大或降序排列, 这样一趟过去后,最大或最小的数字被交换到了最后一位, 然后再从头開始进行两两比較交换,直到倒 ...
- JS数据结构与算法——冒泡排序(把大的数字依次往后放)
一.图解排序过程 注意:比较次数和交换次数之所以不一致,是因为:比较了并不一定就需要交换两个数字的位置,比如比较 1 和 2两个数字,由于 后者本身就比前者大,所以不需要交换两者的位置. 二.代码实现 ...
- 排序算法-冒泡排序算法
2019独角兽企业重金招聘Python工程师标准>>> 冒泡排序算法是所有排序算法中最简单.最基础的一种.冒泡排序算法的思路就是交换排序,通过相邻数据的交换来达到排序的目的. 冒泡排 ...
- 排序算法——冒泡排序(Bubble Sort)
排序算法--冒泡排序(Bubble Sort) 算法简介(Introduction) Bubble sort is to compare adjacent elements of the list a ...
- 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; ...
最新文章
- getOutputStream() 的问题
- 地铁里运用计算机视觉的场景,人工智能技术在地铁运营场景应用研究报告(26页)...
- Snmp扫描-snmpwalk、snmpcheck
- asp:DropDownList用法
- git 修改commit_Git从8到13 深入了解Git特性
- 1.vue简介以及模板语法---vue教程
- python大鱼吃小鱼程序代码_最近跟导师学Python,熬夜弄了两个晚上写出来个大鱼吃小鱼游戏!...
- php漏洞黑掉数据库,WDCPnbsp;add_user.php任意数据库添加任意用户漏洞分析
- perl亲身试验ini---使用perl读写配置文件
- Python入门--__init__,__new__
- android 毫秒值转换时分秒],毫秒数转换成天时分秒、时分秒
- html5客户端页面,iphoneX 适配客户端H5页面的方法教程
- 基于图的广度优先搜索策略(耿7.11)
- Listener method could not be invoked with the incoming messageEndpoint handler details:Method
- shopex mysql 数据库服务器_win2003以isapi的方式配置php+mysql环境(安装了shopEX) 毕竟我是杨小飞i...
- Java 提供给第三方使用接口方法
- php-4.3+mysql-3.23+apache-2.0+vbb-2.32论坛的架设方法
- 《物联网 - 机智云开发笔记》第2章 设备驱动开发
- html制作宣传页面
- 字节跳动1/3员工不支持取消大小周工作制, 员工:每年少赚10万块!
热门文章
- apache wordpress php 外贸独立站
- Several ports (8080, 8009) required by Tomcat v7.0 Server at localhost are already in use. The serve
- Oracle Goldengate ERROR OGG 00446 解决方法
- HUAWEI HG659 lib 任意文件读取漏洞
- 中望3D 2021 “拔模”命令使用曲面做中性面
- vue-cli hot-module-replacement不生效,不自动更新。
- ASP.NET---FileMaker组件功能简介
- 逆向获取博客园APP代码
- spring和jump区别_jump和leap有什么区别?
- C++如何输出带双引号的语句