函数编程思想写快速排序
时间:2010-07-29
来源:互联网
从Haskell的快速排序例子借鉴过来的,发现用PHP 5.3也可以比较优美地写出来。
注意,没有循环语句……
- function qsort($list) {
- // 空表排序后的结果仍然是空表
- if(empty($list)) {
- return $list;
- }
-
- // 取出第一个元素
- $x = array_shift($list);
-
- // 在剩下部分找到所有小于等于 $x 的元素
- $less = array_filter($list, function($n) use($x) {
- return $n <= $x;
- });
-
- // 找到所有大于 $x 的元素
- $larger = array_filter($list, function($n) use($x) {
- return $n > $x;
- });
-
- // 对两部分分别应用快速排序,并将 $x 放到正确的位置上
- return array_merge(qsort($less), array($x), qsort($larger));
- }
-
- // 测试……
- $list = array(3,1,9,18,3,1,10,13,9,8,7);
- $list_sorted = qsort($list);
- print_r($list_sorted);
作者: ggggqqqqihc 发布时间: 2010-07-29
作者: TankMe 发布时间: 2010-07-29
作者: houlai 发布时间: 2010-07-29
houlai 发表于 2010-7-29 09:55
最好别扯到效率上,当然对于快速排序,你可以试试不使用递归有多么难写和多么容易出错。
作者: ggggqqqqihc 发布时间: 2010-07-29
呵呵,我也说了,确实是一种思路
作者: houlai 发布时间: 2010-07-29
你的签名有意思哇
作者: ggggqqqqihc 发布时间: 2010-07-29
呵呵,
作者: houlai 发布时间: 2010-07-29
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28