• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

PHP快速排序

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

 1 <?php
 2 /*
 3  * 重点是递归思想的理解
 4  *一维数组的排序
 5  *@param  $array   需要排序的数组
 6  */
 7 $array=[34,12,23,565,89,6,25,67,45,767,342,98,2];
 8 function qiuck_sort($array){
 9     //如果数组中元素只有一个,则不需要比较,也是递归终止的条件
10     if(count($array)<=1){
11         return $array;
12     }
13     /*
14      * 取一个参考元素,后面的元素与它比较
15      * 小的放在左边,大的放在右边,按照
16      * 此方法分割,直到不能分割为止
17      */
18     $rightArray=$leftArray=array();
19     $base=$array[0];//参考元素,随便选取数组中的一个元素即可
20     //for循环比较
21     for($i=1;$i<count($array);$i++){
22         if($array[$i]<$base){
23             $leftArray[]=$array[$i];
24         }else{
25             $rightArray[]=$array[$i];
26         }
27     }
28     //循环完后,将分割后的数组再次按照相同的方法
29     //进行排序分割,直到不能分割位置
30     $left_tmp=qiuck_sort($leftArray);
31     $right_tmp=  qiuck_sort($rightArray);
32     //合并最后的结果并返回
33     $result=array_merge($left_tmp,array($base),$right_tmp);
34     
35     return $result;
36 }
37 
38 print_r(qiuck_sort($array));
39 
40 
41 排序后的数组:
42 Array ( [0] => 2 [1] => 6 [2] => 12 [3] => 23 [4] => 25 [5] => 34 [6] => 45 [7] => 67 [8] => 89 [9] => 98 [10] => 342 [11] => 565 [12] => 767 
43 ?>

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
php文件上传,下载发布时间:2022-07-10
下一篇:
[PHP]PHP格式化日期formatthedatetimeinPHP发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap