前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据结构和算法——快速排序

数据结构和算法——快速排序

作者头像
Lemon黄
发布2019-11-24 16:06:25
4750
发布2019-11-24 16:06:25
举报
文章被收录于专栏:Lemon黄Lemon黄

1、要解决的问题

给定如下所示的数字列表,请按升序对它们进行排序。

代码语言:javascript
复制
$numbers = [21,25,100,98,89,77];

要求

  • 对数字进行排序时,需要使用插入快速算法
  • 用PHP实现该算法
2、伪代码说明

快速排序也是一种分治算法,类似于合并排序。它通过从列表中选择一个元素(轴)并在其左侧放置小于轴的元素,在其右侧放置大于轴的元素来工作。我们对左侧和右侧重复上述步骤,直到无法再划分列表为止。

选择轴可能很棘手,通常我们只使用第一个或最后一个元素。

描述快速排序的伪代码如下:

代码语言:javascript
复制
PROCEDURE function quickSort    IF list is empty        Return the list    END IF     Choose first element as the pivot     FOR each element of the list start from position 1         IF element is greater than pivot            Assign it to the left side        ELSE            Assign it to the right side        END IF     END FOR     return quickSort(left)+pivot+quickSort(right) END PROCEDURE
3、PHP实现快速排序

如我们所见,我们对该算法使用了递归。通常,分治法算法意味着该算法可以递归编写。

代码语言:javascript
复制
<?php$arrayToSort = [21, 25, 100, 98, 89, 77]; function quickSort($data){    if (count($data) == 0) {        return $data;    }     $pivot = $data[0];     $left = $right = [];     for ($i = 1; $i < count($data); $i++) {        if ($data[$i] < $pivot) {            $left[] = $data[$i];        } else {            $right[] = $data[$i];        }    }     return array_merge(quicksort($left), array($pivot), quicksort($right));} print_r(quickSort($arrayToSort)); // Output:/*Array(    [0] => 21    [1] => 25    [2] => 77    [3] => 89    [4] => 98    [5] => 100)*/

作为一种分而治之的算法,快速排序算法确实非常简单。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Lemon黄 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2、伪代码说明
  • 3、PHP实现快速排序
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档