php排序算法(冒泡排序,快速排序)


Posted in PHP onOctober 09, 2012

冒泡排序实现原理

① 首先将所有待排序的数字放入工作列表中。
② 从列表的第一个数字到倒数第二个数字,逐个检查:若某一位上的数字大于他的下一位,则将它与它的下一位交换。

③ 重复步骤②,直至再也不能交换。

代码实现

<?php
 function bubbingSort(array $array)
 {
     for($i=0, $len=count($array)-1; $i<$len; ++$i)
     {
         for($j=$len; $j>$i; --$j)
         {
             if($array[$j] < $array[$j-1])
             {
                 $temp = $array[$j];
                 $array[$j] = $array[$j-1];
                 $array[$j-1] = $temp;
             }
         }
     }
     return $array;
 } print '<pre>';
 print_r(bubbingSort(array(1,4,22,5,7,6,9)));
 print '</pre>';

快速排序实现原理
采用分治的思想:先保证列表的前半部分都小于后半部分,然后分别对前半部分和后半部分排序,这样整个列表就有序了。

代码实现

function quickSort(array $array)
 {
     $len = count($array);
     if($len <= 1)
     {
         return $array;
     }
     $key = $array[0];
     $left = array();
     $right = array();
     for($i=1; $i<$len; ++$i)
     {
         if($array[$i] < $key)
         {
             $left[] = $array[$i];
         }
         else
         {
             $right[] = $array[$i];
         }
     }
     $left = quickSort($left);
     $right = quickSort($right);
     return array_merge($left, array($key), $right);
 } print '<pre>';
 print_r(quickSort(array(1,4,22,5,7,6,9)));
 print '</pre>';
PHP 相关文章推荐
在同一窗体中使用PHP来处理多个提交任务
May 08 PHP
php高级编程-函数-郑阿奇
Jul 04 PHP
PHP判断远程url是否有效的几种方法小结
Oct 08 PHP
利用ThinkPHP内置的ThinkAjax实现异步传输技术的实现方法
Dec 19 PHP
PHP上传图片进行等比缩放可增加水印功能
Jan 13 PHP
Thinkphp模板中截取字符串函数简介
Jun 17 PHP
PHP调用wsdl文件类型的接口代码分享
Nov 19 PHP
php实现通用的从数据库表读取数据到数组的函数实例
Mar 21 PHP
在Win2003(64位)中配置IIS6+PHP5.2.17+MySQL5.5的运行环境
Apr 04 PHP
php基于PDO实现功能强大的MYSQL封装类实例
Feb 27 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
Apr 04 PHP
php模拟post提交请求调用接口示例解析
Aug 07 PHP
php全排列递归算法代码
Oct 09 #PHP
php列出一个目录下的所有文件的代码
Oct 09 #PHP
解析百度搜索结果link?url=参数分析 (全)
Oct 09 #PHP
仿Aspnetpager的一个PHP分页类代码 附源码下载
Oct 08 #PHP
php随机输出名人名言的代码
Oct 07 #PHP
PHP面向对象学习笔记之二 生成对象的设计模式
Oct 06 #PHP
PHP面向对象学习笔记之一 基础概念
Oct 06 #PHP
You might like
PHP实现图片压缩的两则实例
2014/07/19 PHP
浅谈php fopen下载远程文件的函数
2016/11/18 PHP
Aster vs Newbee BO5 第一场2.19
2021/03/10 DOTA
js关闭模态窗口刷新父页面或跳转页面
2012/12/13 Javascript
js 判断图片是否加载完以及实现图片的预下载
2014/08/14 Javascript
js中confirm实现执行操作前弹出确认框的方法
2014/11/01 Javascript
javascript中定义类的方法详解
2015/02/10 Javascript
jquery中添加属性和删除属性
2015/06/03 Javascript
jQuery 判断图片是否加载完成方法汇总
2015/08/10 Javascript
JS实现灵巧的下拉导航效果代码
2015/08/25 Javascript
Javascript中的几种继承方式对比分析
2016/03/22 Javascript
js学习阶段总结(必看篇)
2016/06/16 Javascript
jQuery插件实现图片轮播特效
2016/06/16 Javascript
详解axios在node.js中的post使用
2017/04/27 Javascript
JS鼠标滚动分页效果示例
2017/07/05 Javascript
js链表操作(实例讲解)
2017/08/29 Javascript
Vue三种常用传值示例(父传子、子传父、非父子)
2018/07/24 Javascript
python中的__slots__使用示例
2015/02/26 Python
Python定时执行之Timer用法示例
2015/05/27 Python
python strip() 函数和 split() 函数的详解及实例
2017/02/03 Python
Python实现读取并保存文件的类
2017/05/11 Python
Python编程之Re模块下的函数介绍
2017/10/28 Python
神经网络python源码分享
2017/12/15 Python
python实现图像识别功能
2018/01/29 Python
Pycharm取消py脚本中SQL识别的方法
2018/11/29 Python
不到20行代码用Python做一个智能聊天机器人
2019/04/19 Python
Python使用sklearn库实现的各种分类算法简单应用小结
2019/07/04 Python
关于Python形参打包与解包小技巧分享
2019/08/24 Python
英国计算机产品零售商:Novatech(定制个人电脑、笔记本电脑、工作站和服务器)
2018/01/28 全球购物
劳资专员岗位职责
2013/12/27 职场文书
临床护士自荐信
2014/01/31 职场文书
大学生自我评价范文分享
2014/02/21 职场文书
投标承诺书范本
2014/03/27 职场文书
使用HTML+Css+transform实现3D导航栏的示例代码
2021/03/31 HTML / CSS
win10电脑双屏显示一个黑屏怎么办?win10电脑双屏显示一个黑屏解决方法
2022/07/15 数码科技
Nginx跨域问题解析与解决
2022/08/05 Servers