PHP基础算法之——快速排序算法

快速排序算法

描述:将待排序数组分割成二个单独的数组,其中一组数组比另一组数组小,则可分别对这两个单独数组进行快速排序,整个排序过程可以递归进行,以达到整个序列有序的目的。

/** * 快速排序算法 * @param array $array * @return array */function quick_sort($array) {    // 判断参数是否为数组,且不为空     if (!is_array($array) || empty($array)) {         return $array;     }     //判断数组是否为1个,是直接返回     $length = count($array);     if($length == 1){        return $array;    }    //声明二个空数组    $left = $right = [];    // 循环遍历,把第一个元素当做基准数    for($i = 1; $i< $length; $i++){        // 比较当前数的大小,并放入对应的左右数组中        if ($array[$i] > $array[0]) {            $right[] = $array[$i];        }else{            $left[] = $array[$i];        }    }    // 递归比较    $left = quick_sort($left);    $right = quick_sort($right);    // 合并左右数组    return array_merge($left, [$array[0]], $right);}

优点:最快排序算法

缺点:不稳定,不适合对象排序

PS:如有比较好的解决方案可以评论或者私信


Fast Sorting Algorithms

凤凰棋牌Description: The array to be sorted is divided into two separate arrays, one of which is smaller than the other. The two separate arrays can be sorted quickly respectively. The whole sorting process can be carried out recursively to achieve the purpose of ordering the whole sequence.

 /** * Fast Sorting Algorithms * @param array $array * @return array */function quick_sort($array) {    // Determine whether the parameters are arrays and not empty     if (!is_array($array) || empty($array)) {         return $array;     }     //Determine whether the array is 1 or not, and return it directly     $length = count($array);     if($length == 1){        return $array;    }    //Declare two empty arrays    $left = $right = [];    // Cyclic traversal, using the first element as a benchmark    for($i = 1; $i< $length; $i++){        // Compare the size of the current number and put it in the corresponding left and right arrays        if ($array[$i] > $array[0]) {            $right[] = $array[$i];        }else{            $left[] = $array[$i];        }    }    // Recursive comparison    $left = quick_sort($left);    $right = quick_sort($right);    // Merge left and right arrays    return array_merge($left, [$array[0]], $right);}

Advantages: Fast Sorting Algorithms

凤凰棋牌Disadvantage: Unstable, not suitable for object sorting

PS: If you have a better solution, you can comment or confide in it.

未经允许不得转载:凤凰棋牌PHP100中文网 - 中国第一档PHP资源分享门户 » PHP基础算法之——快速排序算法

赞 (0) 打赏

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

博乐棋牌 六合宝典 六合宝典 凤凰棋牌 凤凰棋牌苹果版 博乐棋牌 六合宝典 众鑫棋牌app下载 凤凰棋牌游戏 博乐棋牌