PHP实现冒泡排序和快速排序
2017-01-03 22:15
435 查看
声明
php中,数组是当一个普通变量,值传递是要一个实参的一个拷贝副本,跟实参无关,引用传递后可以改变实参的值。而类的对象是无论值传递和引用传递都是引用传递,是对对象的引用,都会改变实参的值。PHP中的数组可以按值传递,也可以按引用传递,所以编程时一定要注意。
下面的程序是由Java转换过来的,结构上没有什么变化。直接上代码:
按值传递:
冒泡排序:
<?php $array = array(5,2,8,1,6,9,12,3,15,20); print_r($array); echo "<br>"; $temp; // $len = count($array); // for ($i = 0; $i < $len;$i++){ // for ($j = $i+1; $j < $len;$j++){ // if ($array[$i] > $array[$j]){ // $temp = $array[$i]; // $array[$i] = $array[$j]; // $array[$j] = $temp; // } // } // } // //print_r($array); function bubbleSort($array){ $len = count($array); for ($i = 0; $i < $len;$i++){ for ($j = $i+1; $j < $len;$j++){ if ($array[$i] > $array[$j]){ $temp = $array[$i]; $array[$i] = $array[$j]; $array[$j] = $temp; } } } return $array; } $array = bubbleSort($array); print_r($array);
快速排序:
<?php $arr = array(5,2,8,1,6,9,12,3,15,20); print_r($arr); echo "<br>"; function quickSort($array,$left,$right){ $i = $left; $j = $right; $middle = $array[($i+$j)/2]; do{ while($array[$i]<$middle && $i<$right){ $i++; } while($array[$j]>$middle && $j>$left){ $j--; } if ($i <= $j){ $temp = $array[$i]; $array[$i] = $array[$j]; $array[$j] = $temp; $i++; $j--; } }while($i <= $j); if ($i < $right){ $array = quickSort($array,$i,$right); } if ($j > $left){ $array = quickSort($array,$left,$j); } return $array; } $arr = quickSort($arr,0,(count($arr)-1)); print_r($arr);
按引用传递:
冒泡排序:
<?php $array = array(5,2,8,1,6,9,12,3,15,20); print_r($array); echo "<br>"; $temp; // $len = count($array); // for ($i = 0; $i < $len;$i++){ // for ($j = $i+1; $j < $len;$j++){ // if ($array[$i] > $array[$j]){ // $temp = $array[$i]; // $array[$i] = $array[$j]; // $array[$j] = $temp; // } // } // } // //print_r($array); function bubbleSort(&$array){ $len = count($array); for ($i = 0; $i < $len;$i++){ for ($j = $i+1; $j < $len;$j++){ if ($array[$i] > $array[$j]){ $temp = $array[$i]; $array[$i] = $array[$j]; $array[$j] = $temp; } } } } bubbleSort($array); print_r($array);
快速排序:
<?php $arr = array(5,2,8,1,6,9,12,3,15,20); print_r($arr); echo "<br>"; function quickSort(&$arr,$left,$right){ $i = $left; $j = $right; $middle = $arr[($i+$j)/2]; do{ while($arr[$i]<$middle && $i<$right){ $i++; } while($arr[$j]>$middle && $j>$left){ $j--; } if ($i <= $j){ $temp = $arr[$i]; $arr[$i] = $arr[$j]; $arr[$j] = $temp; $i++; $j--; } }while($i <= $j); if ($i < $right){ quickSort($arr,$i,$right); } if ($j > $left){ quickSort($arr,$left,$j); } } quickSort($arr,0,(count($arr)-1)); print_r($arr);
相关文章推荐
- 一个关于if else容易迷惑的问题
- PHP5.2.*防止Hash冲突拒绝服务攻击的Patch
- 深入理解PHP之匿名函数
- JSP/PHP基于Ajax的分页功能实现
- 冒泡排序
- 快速排序
- 关于PHP通过PDO用中文条件查询MySQL的问题。
- 什么是设计模式
- 肯特·贝克:改变人生的代码整理魔法
- 通过构建一个简单的掷骰子游戏去学习怎么用 Python 编程
- PHP数据库长连接mysql_pconnect的细节
- 你应该学习哪种编程语言?
- Php Installing An Expansion
- Laravel5.3 表单验证中文报错提示语言包
- 10 件在 PHP 7 中不要做的事情
- 写程序的时候应该如何思考?
- rem : web app适配的秘密武器
- jquery高级应用之Deferred对象