冒泡排序的PHP实现
2016-02-28 09:28
363 查看
定义:
它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
排序思想:(从后往前)
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较
它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
排序思想:(从后往前)
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较
<?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);
相关文章推荐
- yii2中使用$layout控制布局文件
- PDO介绍[不包括具体使用方法]
- Yii2 源码手记
- PHP多维数组排序
- ThinkPHP 3.2.3 数据缓存与静态缓存
- 懂得钩子Hook以及在Thinkphp下利用钩子使用行为扩展
- Yii2框架添加API Modules
- Laravel 中composer相关操作提示php相关异常的处理方法
- PHP Try-catch 语句使用技巧
- 【嘉兴东臣PHP】PHP面向对象
- 【嘉兴东臣php】面向对象
- cenos 安装php环境
- 【嘉兴东臣php】面向对象学习周总结
- 【嘉兴东臣php】面向对象
- 【嘉兴东臣php】面向对象
- vsftpd 匿名上传,删除,下载配置方法
- win server 2008 r2 iis+php 500错误内部服务器错误。
- 详解thinkphp模型
- 详解thinkphp控制器
- thinkphp路由规则