PHP算法题:如何实现冒泡排序
算法原理:
1.比较相邻的元素,如果第一个比第二个大,那么就交换这两个元素。
2.对每一对相邻元素做同样的工作,从第一对开始到最后一对结束,最后的元素应该会是最大的数。
3.除了最后一个元素外,针对其他的元素重复以上步骤。
4.对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较为止。
实现代码:
<?phpheader("Content-type:text/html;charset=utf-8");// 性能最差的冒泡排序方法function maopao1($arr) {$len = count($arr); //计算数字长度for ($i = 1; $i < $len; $i++) {// 该层循环控制需要冒泡的轮数for ($k = 0; $k < $len -$i; $k++) {if ($arr[$k] > $arr[$k+1]) {$tmp = $arr[$k];$arr[$k] = $arr[$k+1];$arr[$k+1] = $tmp;}}}return $arr;}// 性能最好的冒泡排序方法function maopao2($arr) {// 设置变量的初始值$low = 0;$high = count($arr) -1;while ($low < $high) {// 正向冒泡,找到最大值for ($j = $low; $j < $high; ++$j) {if ($arr[$j] > $arr[$j+1]) {$tmp = $arr[$j];$arr[$j] = $arr[$j+1];$arr[$j+1] = $tmp;}}--$high;// 放向冒泡,找到最小值for ($j = $high; $j > $low; --$j) {if ($arr[$j] < $arr[$j-1]) {$tmp = $arr[$j];$arr[$j] = $arr[$j-1];$arr[$j-1] = $tmp;}}++$low;}return $arr;}$arr = array(121,656,8997,11,56456,778,65454,314354,1121);echo "排序前:";foreach ($arr as $k => $val) {echo $val.' ';}echo "<br>方法一排序后:";$arr = maopao1($arr);foreach ($arr as $k => $val) {echo $val.' ';}echo "<br>方法二排序后:";$arr = maopao2($arr);foreach ($arr as $k => $val) {echo $val.' ';}
?>
PHP算法题:如何实现冒泡排序相关推荐
- JAVA常见算法题(三十一)---冒泡排序
package com.jege.spring.boot.hello.world;/*** java算法之冒泡排序<br>* 将数组按照从大到小的顺序排列<br>* * * @ ...
- a*算法的时间复杂度_从经典算法题看时间复杂度
本文首发公众号:架构精进,排版比较清晰. 经常有同学在 LeetCode 的题解中问解法的复杂度是多少.作为一个懒人,我一直在「逃避」这个问题,毕竟这东西听起来就这么「复杂」. 但本着对题解认真负责 ...
- JavaScript算法题:查找数字在数组中的索引
翻译:疯狂的技术宅 原文:medium.freecodecamp.org/how-to-find- 编写算法时,排序是一个非常重要的概念.它有各种各样的种类:冒泡排序.希尔排序.分块块排序,梳排序,鸡 ...
- 力扣高频算法php_互联网公司最常见的面试算法题有哪些?
很多时候,你即使提前复习了这些最常见的面试算法题,你依旧无法通过算法面试! 为什么?你在提前准备复习的时候,在网上找了半天相应题目的分析文章,但你看了就是不懂. 你在面试的时候,卡壳了,一时间忘了怎么 ...
- leetcode贪心算法题集锦(持续更新中)
leetcode贪心算法题集锦 leetcode贪心算法题集锦(持续更新中).python 和C++编写. 文章目录 leetcode贪心算法题集锦 一.贪心算法 1.盛最多水的容器 2.买股票的最佳 ...
- python算法题排序_python-数据结构与算法- 面试常考排序算法题-快排-冒泡-堆排-二分-选择等...
算法可视化网站推荐---->visualgo 0.面试题中的排序算法 一些排序算法可能在工作中用的会比较少,但是面试却是不得不面对的问题.算法有助于提高我们对数据结构的理解以及提高自己的逻辑能力 ...
- java基础算法题(入门题与简单题)
题目来自lintcode,答案来自九章算术,将自己在lintcode上训练的一些简单算法题贴出来,作为知识的总结与整理.便于查看复习. 第一部分(入门级别,只做了开放的部分,大部分需要收费的VIP才有 ...
- 学习笔记之15道简单算法题
15道简单算法题 http://www.cnblogs.com/hlxs/archive/2014/06/06/3772333.html (●-●) | 剑指Offer_编程题_牛客网 http:// ...
- 面试必备:高频算法题汇总「图文解析 + 教学视频 + 范例代码」必问之 排序 + 二叉树 部分!
排序 所谓排序算法,即通过特定的算法因式将一组或多组数据按照既定模式进行重新排序.这种新序列遵循着一定的规则,体现出一定的规律,因此,经处理后的数据便于筛选和计算,大大提高了计算效率. 对于排序: 我 ...
- 面试必备:高频算法题汇总「图文解析 + 教学视频 + 范例代码」必知必会 排序 + 二叉树 部分!
排序 时光小说网 https://wap.youxs.org/ 所谓排序算法,即通过特定的算法因式将一组或多组数据按照既定模式进行重新排序.这种新序列遵循着一定的规则,体现出一定的规律,因此,经处理后 ...
最新文章
- 五个为你的设计添加光影效果的简单技巧(转)
- [笔记]java-package
- 为什么大家越来越不着急换手机?
- 数据包络分析方法与maxdea软件_数据包络模型 DEA三阶段超效率SBM非期望
- android 长截图拼接,Android拼接合并图片生成长图
- Knoll Light Factory 3.2 for Mac 完整汉化版 灯光工厂 for Mac中文版 支持PSCC2019
- 基于Java+Swing实现坦克大战游戏
- 51单片机通过WIFI模块ESP8266控制四路继电器
- 010 Editor逆向分析文档
- Redis集群--Cluster--节点通信的过程(原理)
- windows常用快捷键(截图,录屏,放大镜,虚拟桌面,写字板,资源管理器快捷键)
- 小甲鱼Python3学习笔记之第十讲(仅记录学习)
- 为何说 a16z 是一家通过 VC 获利的媒体公司?
- 传说中的移动员工工资表,也不知是真是假
- Java中 关键字abstract(抽像)的定义
- js(对象一行拆分为多行)
- [句型] 二十六、特殊疑问句 3
- Teen Readers【青少年读者】
- mysql批量替换字段关键词_Mysql批量替换某表里面某个字段的关键字
- Matlab播放音频文件(音乐)!