PHP之冒泡排序
2015-07-02 10:46
591 查看
昨天去酷狗面试的时候,在笔试那一关,有道要求用PHP实现冒泡排序的编程题,因为实在太久没用过冒泡排序,忘记了算法的原理,结果留了空白,实在无语。因此今天把PHP的冒泡排序代码记录一下:
<?php /** * 冒泡排序 * @param array $numbers 要排序的数组,只限数字一维数组 * @param boolean $asc 排序顺序,true是正序,false是逆序 */ function bubble_sort(array $numbers, $asc = true) { $n = count($numbers); // 外循环最多排(n - 1)次 $out_loop_cnt = $n - 1; for ($i = 0; $i < $out_loop_cnt; $i++) { // 内循环最多排(n - i - 1)次 $in_loop_cnt = $n - $i - 1; for ($j = 0; $j < $in_loop_cnt; $j++) { // 根据排序顺序判断相邻两个数是否符合交换条件 $swap = $asc ? ($numbers[$j] > $numbers[$j + 1]) : ($numbers[$j] < $numbers[$j + 1]); if ($swap) { $temp = $numbers[$j + 1]; $numbers[$j + 1] = $numbers[$j]; $numbers[$j] = $temp; } } } return $numbers; } $arr = [1, 3, 5, 8, 4]; var_dump(bubble_sort($arr)); /** * 输出: * array (size=5) * 0 => int 1 * 1 => int 3 * 2 => int 4 * 3 => int 5 * 4 => int 8 */ var_dump(bubble_sort($arr, false)); /** * 输出: * array (size=5) * 0 => int 8 * 1 => int 5 * 2 => int 4 * 3 => int 3 * 4 => int 1 */
相关文章推荐
- 一个关于if else容易迷惑的问题
- PHP5.2.*防止Hash冲突拒绝服务攻击的Patch
- 深入理解PHP之匿名函数
- JSP/PHP基于Ajax的分页功能实现
- 冒泡排序
- 关于PHP通过PDO用中文条件查询MySQL的问题。
- 什么是设计模式
- PHP数据库长连接mysql_pconnect的细节
- Php Installing An Expansion
- PHP+Apache在Windows 9x下的安装和配置
- IIS 6 的 PHP 最佳配置方法
- 安装Apache和PHP的一些补充
- Linux Apache+MySQL+PHP
- 建立Apache+PHP+MySQL数据库驱动的动态网站
- PHP 5.3.0 安装分析心得
- apache 环境下 php 的配置注意事项
- ASP.NET、ASP、PHP、JSP之间有什么区别?
- PHP VBS JS 函数 对照表
- C语言实现的统计php代码行数功能源码(支持文件夹、多目录)