冒泡排序的PHP实现
2024-10-21 07:28:36
定义:
它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
排序思想:(从后往前)
- 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
- 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
- 针对所有的元素重复以上的步骤,除了最后一个。
- 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较
<?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);
最新文章
- ios-uitableviewcell展开
- Array和ArrayList的异同点【转】
- (转载)http_build_query用法,挺方便的
- java缓存技术(转)
- Codeforces Round #383 (Div. 2) B. Arpa’s obvious problem and Mehrdad’s terrible solution
- mysql新建数据库,并设置charset为utf8,使用utf8_general_ci字符集校验结果
- golang fmt.printf()
- 网络知识 - 简易的自定义Web服务器
- vuex 改变状态值得命名问题
- Beta冲刺三
- 程序员Web面试之前端框架等知识
- ASP.NET Web API上实现 Web Socket - 转
- Linux磁盘空间被占用问题 (分区目录占用空间比实际空间要大: 资源文件删除后, 空间没有真正释放)
- pandas DataFrame.shift()函数
- hiho_offer收割18_题解报告_差第四题
- 一家VC支持企业的发展轨迹&mdash;&mdash;了解每次融资后股权和期权的变化,以及股份是如何被稀释的【转载】
- webApi之FromUri和FromBody区别
- android周期性任务
- CF 277.5 C.Given Length and Sum of Digits.. 构造
- bzoj1609 / P2896 [USACO08FEB]一起吃饭Eating Together(最长不降子序列)