zoukankan      html  css  js  c++  java
  • 排序算法__快速排序

     1 <?php
     2 
     3 $arr=array(1,43,54,62,21,66,32,78,36,76,39);  
     4 
     5 function quickSort($arr) {
     6     //先判断是否需要继续进行
     7     $length = count($arr);
     8     if($length <= 1) {
     9         return $arr;
    10     }
    11 
    12     //如果没有返回,说明数组内的元素个数 多余1个,需要排序
    13     //选择一个标尺
    14     //选择第一个元素
    15     $base_num = $arr[0];
    16 
    17     //遍历 除了标尺外的所有元素,按照大小关系放入两个数组内
    18     //初始化两个数组
    19     $left_array = array();//小于标尺的
    20     $right_array = array();//大于标尺的
    21 
    22     for($i=1; $i<$length; $i++) {
    23         if($base_num > $arr[$i]) {
    24             //放入左边数组
    25             $left_array[] = $arr[$i];
    26         } else {
    27             //放入右边
    28             $right_array[] = $arr[$i];
    29         }
    30     }
    31 
    32     //再分别对 左边 和 右边的数组进行相同的排序处理方式
    33     //递归调用这个函数,并记录结果
    34     $left_array = quickSort($left_array);
    35     $right_array = quickSort($right_array);
    36     
    37     //合并左边 标尺 右边
    38     return array_merge($left_array, array($base_num), $right_array);
    39 }
    40 
    41 $arr = quickSort($arr);
    42 
    43 echo "<pre>";
    44 print_r($arr);
    45 
    46 
    47 
    48 
    49 /*
    50 Array
    51 (
    52     [0] => 1
    53     [1] => 21
    54     [2] => 32
    55     [3] => 36
    56     [4] => 39
    57     [5] => 43
    58     [6] => 54
    59     [7] => 62
    60     [8] => 66
    61     [9] => 76
    62     [10] => 78
    63 )
    64  */
    View Code
  • 相关阅读:
    .ashx
    svn设置过滤内容
    .NET开发人员应该下载的十个必备工具(1)
    C#中操作XML (节点添加,修改,删除完整版)
    NVelocity模板引擎的注意事项
    什么是好的程序员?
    SQLSERVER2005登录时出错
    240多个jQuery插件(转)
    自己搭建svn
    一元三次方程求解
  • 原文地址:https://www.cnblogs.com/hangtt/p/6427161.html
Copyright © 2011-2022 走看看