定义:

  它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

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

  

 <?php
class BubbleSortClass
{
private $_arrayList=[]; public function __construct(array $arrayList)
{
$this->_arrayList = $arrayList;
} /**
* @param $firstVar
* @param $lastVar
*/
private function _changeVars(&$firstVar, &$lastVar)
{
$tmpVar = "";
if ($firstVar > $lastVar) {
$tmpVar = $firstVar;
$firstVar = $lastVar;
$lastVar = $tmpVar;
}
} /**
* @return array
*/
public function sort()
{
$arrayCount = count($this->_arrayList); for ($i=0; $i<$arrayCount; $i++) {
for ($j=0; $j<$arrayCount-$i-1; $j++) {
$this->_changeVars($this->_arrayList[$j], $this->_arrayList[$j+1]);
}
} return $this->_arrayList;
}
} $arrayList = [23,9,122,3,1,91,81];
$bubbleSortClass = new BubbleSortClass($arrayList);
$sortArrayList = $bubbleSortClass->sort(); //Array ( [0] => 1 [1] => 3 [2] => 9 [3] => 23 [4] => 81 [5] => 91 [6] => 122 )
print_r($sortArrayList);

最新文章

  1. ios-uitableviewcell展开
  2. Array和ArrayList的异同点【转】
  3. (转载)http_build_query用法,挺方便的
  4. java缓存技术(转)
  5. Codeforces Round #383 (Div. 2) B. Arpa’s obvious problem and Mehrdad’s terrible solution
  6. mysql新建数据库,并设置charset为utf8,使用utf8_general_ci字符集校验结果
  7. golang fmt.printf()
  8. 网络知识 - 简易的自定义Web服务器
  9. vuex 改变状态值得命名问题
  10. Beta冲刺三
  11. 程序员Web面试之前端框架等知识
  12. ASP.NET Web API上实现 Web Socket - 转
  13. Linux磁盘空间被占用问题 (分区目录占用空间比实际空间要大: 资源文件删除后, 空间没有真正释放)
  14. pandas DataFrame.shift()函数
  15. hiho_offer收割18_题解报告_差第四题
  16. 一家VC支持企业的发展轨迹&mdash;&mdash;了解每次融资后股权和期权的变化,以及股份是如何被稀释的【转载】
  17. webApi之FromUri和FromBody区别
  18. android周期性任务
  19. CF 277.5 C.Given Length and Sum of Digits.. 构造
  20. bzoj1609 / P2896 [USACO08FEB]一起吃饭Eating Together(最长不降子序列)

热门文章

  1. mac下安装libpng环境
  2. Ubuntu下部署GitLab-——基于14.04系统
  3. 第十篇 javascript基础语法
  4. Azure disk iops的测试
  5. Erlang tool -- lager overload protection
  6. Java基础--单例类创建和测试
  7. PV 和 UV IP
  8. maven学习6 Eclipse下Tomcat常用设置
  9. Ubuntu14.04LTS上安装Pip
  10. DVWA平台v1.9-Brute Force