php实现快速排序法函数代码


Posted in PHP onAugust 27, 2012

代码1:

<?php 
function quicksort($str){ 
if(count($str)<=1) return $str;//如果个数不大于一,直接返回 
$key=$str[0];//取一个值,稍后用来比较; 
$left_arr=array(); 
$right_arr=array(); 
for($i=1;$i<count($str);$i++){//比$key大的放在右边,小的放在左边; 
if($str[$i]<=$key) 
$left_arr[]=$str[$i]; 
else 
$right_arr[]=$str[$i]; 
} 
$left_arr=quicksort($left_arr);//进行递归; 
$right_arr=quicksort($right_arr); 
return array_merge($left_arr,array($key),$right_arr);//将左中右的值合并成一个数组; 
}//以下是测试 
$str=array(5,3,8,2,5,9,7,2,1,4,0); 
print_r(quicksort($str)); 
?>

代码2:
/* @快速排序法*/ 
function quickSort($left,$right,$arr){ 
$l = $left; 
$r = $right; 
$pivot = $arr[($left+$right)/2]; 
$temp = 0; while($l<$r){ 
while($arr[$l]<$pivot){ 
$l++; 
} 
while($arr[$r]>$pivot){ 
$r--; 
} 
if($l>=$r) break; 
$temp = $arr[$l]; 
$arr[$l] = $arr[$r]; 
$arr[$r] = $temp; 
if($arr[$l]==$pivot) --$r; 
if($arr[$r]==$pivot) ++$l; 
} 
if($l==$r){ 
$l++; 
$r--; 
} 
if($left<$r){ 
quickSort($left, $r, $arr); 
}elseif($right>$l){ 
quickSort($l, $right, $arr); 
}else{ 
return $arr; 
} 
}
PHP 相关文章推荐
mysql5详细安装教程
Jan 15 PHP
经典的PHPer为什么被认为是草根?
Apr 02 PHP
PHP的异常处理类Exception的使用及说明
Jun 13 PHP
PHP实现使用优酷土豆视频地址获取swf播放器分享地址
Jun 05 PHP
11个PHPer必须要了解的编程规范
Sep 22 PHP
php递归法读取目录及文件的方法
Jan 30 PHP
PHP cURL初始化和执行方法入门级代码
May 28 PHP
Thinkphp整合微信支付功能
Dec 14 PHP
PHP数组操作实例分析【添加,删除,计算,反转,排序,查找等】
Dec 24 PHP
PHP编程实现多维数组按照某个键值排序的方法小结【2种方法】
Apr 27 PHP
Laravel 创建可以传递参数 Console服务的例子
Oct 14 PHP
Yii框架自定义数据库操作组件示例
Nov 11 PHP
php中3种方法统计字符串中每种字符的个数并排序
Aug 27 #PHP
简单的方法让你的后台登录更加安全(php中加session验证)
Aug 22 #PHP
PHP写的获取各搜索蜘蛛爬行记录代码
Aug 21 #PHP
php基础教程 php内置函数实例教程
Aug 21 #PHP
php+ajax做仿百度搜索下拉自动提示框(有实例)
Aug 21 #PHP
php计算十二星座的函数代码
Aug 21 #PHP
表格展示无限级分类(PHP版)
Aug 21 #PHP
You might like
PHP中strlen()和mb_strlen()的区别浅析
2014/06/19 PHP
php运行提示:Fatal error Allowed memory size内存不足的解决方法
2014/12/17 PHP
PHP中使用php5-ffmpeg撷取视频图片实例
2015/01/07 PHP
PHP使用GD库输出汉字的方法【测试可用】
2016/11/10 PHP
Zend Framework入门教程之Zend_Registry组件用法详解
2016/12/09 PHP
Thinkphp整合微信支付功能
2016/12/14 PHP
php获取给定日期相差天数的方法分析
2017/02/20 PHP
Laravel框架路由和控制器的绑定操作方法
2018/06/12 PHP
YII框架模块化处理操作示例
2019/04/26 PHP
加载列表时jquery获取ul中第一个li的属性
2014/11/02 Javascript
js实现向右横向滑出的二级菜单效果
2015/08/27 Javascript
使用json来定义函数,在里面可以定义多个函数的实现方法
2016/10/28 Javascript
浅谈jquery拼接字符串效率比较高的方法
2017/02/22 Javascript
React-Router如何进行页面权限管理的方法
2017/12/06 Javascript
基于Vue实现平滑过渡的拖拽排序功能
2019/06/12 Javascript
Vue路由模块化配置的完整步骤
2019/08/14 Javascript
SpringBoot+Vue 前后端合并部署的配置方法
2020/12/30 Vue.js
python使用xmlrpc实例讲解
2013/12/17 Python
python根据开头和结尾字符串获取中间字符串的方法
2015/03/26 Python
Python实现删除文件但保留指定文件
2015/06/21 Python
Python 正则表达式的高级用法
2016/12/04 Python
python脚本实现验证码识别
2018/06/07 Python
Django migrations 默认目录修改的方法教程
2018/09/28 Python
python+mysql实现学生信息查询系统
2019/02/21 Python
python多线程爬取西刺代理的示例代码
2021/01/30 Python
HTML5如何实现元素拖拽
2016/03/11 HTML / CSS
英国电子专家:maplin
2019/09/04 全球购物
J2EE模式面试题
2016/10/11 面试题
出纳员岗位职责风险
2014/03/06 职场文书
五水共治捐款倡议书
2014/05/14 职场文书
年终考核实施方案
2014/05/26 职场文书
2015年党员岗位承诺书
2015/04/27 职场文书
灵魂歌王观后感
2015/06/17 职场文书
2019新员工心得体会
2019/06/25 职场文书
python爬取豆瓣电影TOP250数据
2021/05/23 Python
用Python进行栅格数据的分区统计和批量提取
2021/05/27 Python