冒泡排序原理

冒泡排序对一个数组里的数字进行排序,把数组里两个相邻的数比较大小,将值小的数放在前面,把大的数往后面放,当然这种排序是升序,即从小到大。
举例说明
$array = [64, 56, 31, 68, 6];
数组中有五个元素,按照原理说法,再详细说一下做几轮比较和比较的细节。
第一轮[64, 56, 31, 68, 6]:
第一次比较是拿64和56比较,也就是$array[0] 和 $array [1] 比较,因为64比56大,那么56放在前面,64放在后面,结果为 [56, 64, 31, 68, 6]
第二次比较是拿64和31比较,也就是$array[1] 和 $array [2] 比较,因为64比31大,那么31放在前面,64放在后面,结果为 [56, 31, 64, 68, 6]
第三次比较是拿64和68比较,也就是$array[2] 和 $array [3] 比较,因为68比64大,那么64保持在前,68保持在后,结果为 [56, 31, 64, 68, 6]
第四次比较是拿68和6比较 ,也就是$array[3] 和 $array [4] 比较,因为68比6 大,那么6放在前面, 68放在前面,结果为 [56, 31, 64, 6, 68]
 
到此,第一轮比较结束,从最后的结果里[56, 31, 64, 6, 68]看出,并没有按照从小到大的结果排列,但是68作为数组里最大的值,已经放到了最后面,我们下次排序是不是可以不管最后一个数了?
由此可想而知,第二轮就少了一次比较,也就是三次就可以了,以此推理,比较的次数越来越少。

第二轮[56, 31, 64, 6, 68]:
第一次比较是拿56和31比较,也就是$array[0] 和 $array [1] 比较,因为56比31大,那么31放在前面,56放在后面,结果为 [31, 56, 64, 6, 68]
第二次比较是拿56和64比较,也就是$array[1] 和 $array [2] 比较,因为64比56大,那么56保持在前,64保持在前,结果为 [31, 56, 64, 6, 68]
第三次比较是拿64和6 比较,也就是$array[2] 和 $array [3] 比较,因为64比6 大,那么6 放在前面,64放在后面,结果为 [31, 56, 6, 64, 68]

到此,结果为[31, 56, 6, 64, 68],继续~

第三轮[31, 56, 6, 64, 68]:
第一次比较是拿56和31比较,也就是$array[0] 和 $array [1] 比较,因为56比31大,那么31保持在前,56保持在前,结果为 [31, 56, 6, 64, 68]
第二次比较是拿56和6 比较,也就是$array[1] 和 $array [2] 比较,因为56比 6大,那么 6放在前面,56放在后面,结果为 [31, 6, 56, 64, 68]

到此,结果为[31, 6, 56, 64, 68],继续~

第四轮[31, 6, 56, 64, 68]:
最后一次比较是拿31和6比较,也就是$array[0] 和 $array [1] 比较,因为31比6大,那么6放在前面,31放在后面,结果为 [6, 31, 56, 64, 68]
 
到此,结果为[6, 31, 56, 64, 68],结束~
  

仔细观察下,5个元素的数组。比较了四轮,并且每轮比较的次数是逐渐减少的(-1)。对此我们可以用两层循环即可完成,外层循环控制循环轮次,内层循环控制每轮的比较次数。

代码

<?php
//从小到大排序
function sort_arr($array){
$count = count($array);
$temp = ; //临时变量声明
for($i = ; $i < $count - ; $i ++) { //控制轮数
for($j = ; $j < $count - - $i; $j ++) { //控制每轮次数
if ($array[$j] > $array[$j +]) {
$temp = $array[$j]; //临时变量存放
$array[$j] = $array[$j + ]; //交换位置
$array[$j + ] = $temp; //交换位置
}
}
}
return $array;
} $array = [, , , , ];
print_r( sort_arr($array) );
Array
(
[] =>
[] =>
[] =>
[] =>
[] =>
)

Centos下安装Lamp和vsftpd、redis的更多相关文章

  1. CentOS下安装LAMP环境

    1.安装Apache yum -y install httpd # 开机自启动 chkconfig httpd on # 启动httpd 服务 service httpd start #安装apach ...

  2. Linux CentOs下安装lamp

    以home目录为例,进入/home cd /home 是否安装gcc与gcc-c++,没有则安装 yum -y install gcc gcc-c++ 一.安装Apache 下载httpd wget ...

  3. Centos下安装配置LAMP(Linux+Apache+MySQL+PHP)

    Centos下安装配置LAMP(Linux+Apache+MySQL+PHP)   关于LAMP的各种知识,还请大家自行百度谷歌,在这里就不详细的介绍了,今天主要是介绍一下在Centos下安装,搭建一 ...

  4. CentOS下搭建LAMP环境详解

    前言:在这里将介绍如何在CentOS下搭建LAMP环境(全部使用源码编译安装),用于web服务器开发. •LAMP: Linux + Apache + PHP + Mysql. •系统: CentOS ...

  5. centos下安装php环境

    centos下安装php环境 安装apache yum install httpd-devel 启动apache /etc/init.d/httpd start 安装mysql yum install ...

  6. Centos下搭建LAMP+PHP

    Centos下搭建LAMP+PHP LAMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写: Linux,操作系统 Apache,网页服务器 MariaDB或MySQL,数据库管 ...

  7. CentOS下安装hadoop

    CentOS下安装hadoop 用户配置 添加用户 adduser hadoop passwd hadoop 权限配置 chmod u+w /etc/sudoers vi /etc/sudoers 在 ...

  8. CentOS下安装使用start-stop-daemon

    CentOS下安装使用start-stop-daemon 在centos下下了个自启动的服务器脚本 执行的时候发现找不到start-stop-daemon命令 好吧 执行手动编译一下 加上这个命令 w ...

  9. 从零开始学 Java - CentOS 下安装 Tomcat

    生活以痛吻我,我仍报之以歌 昨天晚上看到那个冯大辉老师的微信公众号,「小道消息」上的一篇文章,<生活以痛吻我,我仍报之以歌>.知乎一篇匿名回答,主题为<冯大辉到底是不是技术大牛,一个 ...

随机推荐

  1. shell 学习四十五天---xargs

    当 find 产生一个文件列表时,该列表提供给另一个命令有时是很有用的.案例: $touch abc.c erd.c oiy.c $ll ./erd.c ./abc.c ./oiy.c $find - ...

  2. 智能机器人chatbot论文集合

    机器不学习 jqbxx.com-专注机器学习,深度学习,自然语言处理,大数据,个性化推荐,搜索算法,知识图谱 今年开始接触chatbot,跟着各种专栏学习了一段时间,也读了一些论文,在这里汇总一下.感 ...

  3. 03_HTML Canvas第一天

    视频来源:麦子学院 讲师:刘慧涛 w3cshool之HTML5画布:http://www.w3school.com.cn/html5/html_5_canvas.asphtml5 canvas参考手册 ...

  4. 【Java框架型项目从入门到装逼】第十五节 - jdbc模糊查询实现(附带详细调试过程)

    上一节,我们实现了用户列表查询,已经按条件精确查询: if(student.getUsername() != null && !"".equals(student. ...

  5. 一行代码搭建 Python 静态服务器

    如果电脑上安装有Python, 那么进入到目标文件夹,在终端中运行如下命令, 即可搭建映射当前目录的静态文件服务器: python -m SimpleHTTPServer 9000 默认端口号是800 ...

  6. 浅析调用JSR303的validate方法, 验证失败时抛出ConstraintViolationException

    废话不多说,直接进入正题:如何使用JSR303的validate,进行数据校验,失败后直接抛出异常加入流转信息中,并在form页面提示出来. 首先我们为了启用验证,需要向 项目中添加Bean验证的实现 ...

  7. Spring整合JMS(四)——事务管理

    原文链接:http://haohaoxuexi.iteye.com/blog/1983532 Spring提供了一个JmsTransactionManager用于对JMS ConnectionFact ...

  8. P1045 麦森数

    别问我为什么要写水题 #include <iostream> #include <cstdio> #include <cstring> #include <a ...

  9. BZOJ 2595: [Wc2008]游览计划 [DP 状压 斯坦纳树 spfa]【学习笔记】

    传送门 题意:略 论文 <SPFA算法的优化及应用> http://www.cnblogs.com/lazycal/p/bzoj-2595.html 本题的核心就是求斯坦纳树: Stein ...

  10. youtube视频字幕下载

    视频下载 安装TamperMonkey插件 字幕下载 http://mo.dbxdb.com/setting.html https://zhuwei.me/y2b/